Java图形界面超实用使用教程

 更新时间:2024年01月11日 11:36:45   作者:m0_62526778  
在Java编程中图形界面应用程序是非常常见和重要的一部分,下面这篇文章主要给大家介绍了关于Java图形界面的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

一、常用组件

1. JFrame

JFrame是Swing中最常用的顶级容器,它用于包含和管理其他Swing组件。JFrame提供了一些常用的方法,如setTitle()、setDefaultCloseOperation()、setResizable()、setVisible()等等,用于控制窗口的外观和行为。

2. JPanel

JPanel是Swing中常用的容器组件,用于将其他Swing组件放置在一起,形成一个组件集合。JPanel可以嵌套在其他容器中,如JFrame、JDialog等等。

3. JLabel

JLabel是Swing中用于显示文本或图像的组件,它可以用于显示静态的提示信息或标签等等。JLabel提供了一些常用的方法,如setText()、setIcon()、setHorizontalAlignment()等等,用于控制标签的文本和图像内容以及对齐方式等。

4. JTextField

JTextField是Swing中用于接收单行文本输入的组件,它可以用于输入和显示文本信息。JTextField提供了一些常用的方法,如setText()、getText()、setEditable()等等,用于控制文本框的内容和可编辑性等。

5. JButton

JButton是Swing中用于响应用户单击操作的组件,它可以用于触发相应的事件处理程序,如打开一个文件、执行计算等等。JButton提供了一些常用的方法,如setText()、setMnemonic()、addActionListener()等等,用于控制按钮的文本、快捷键和事件监听等。

6. JCheckBox

JCheckBox是Swing中用于提供复选框选项的组件,它可以用于让用户选择多个选项。JCheckBox提供了一些常用的方法,如setText()、isSelected()、addItemListener()等等,用于控制复选框的文本和选中状态以及事件监听等。

7. JRadioButton

JRadioButton是Swing中用于提供单选框选项的组件,它可以用于让用户从多个选项中选择一个。JRadioButton提供了一些常用的方法,如setText()、isSelected()、addItemListener()等等,用于控制单选框的文本和选中状态以及事件监听等。

8. JComboBox

JComboBox是Swing中用于提供下拉列表选项的组件,它可以用于让用户从多个选项中选择一个。JComboBox提供了一些常用的方法,如addItem()、setSelectedIndex()、addActionListener()等等,用于控制下拉列表的选项和选中状态以及事件监听等。

9. JList

JList是Swing中用于显示列表项的组件,它可以用于显示多个选项并允许用户进行选择。JList提供了一些常用的方法,如setListData()、getSelectedValue()、addListSelectionListener()等等,用于控制列表项的数据和选中值以及事件监听等。

(一)JPanel中常用方法

JPanel提供了一些常用的方法,如add()、remove()、setLayout()、getPreferredSize()等等,用于控制面板中的组件和布局方式以及尺寸等。下面是一些常用的方法介绍:

  • add(Component comp)
    该方法用于向面板中添加一个组件,其中 comp 表示要添加的组件。该方法还可以接受一个整数参数,用于指定组件的索引位置。例如,panel.add(button)将向面板中添加一个按钮组件。
  • remove(Component comp)
    该方法用于从面板中删除一个组件,其中comp表示要删除的组件。例如,panel.remove(button)将从面板中删除一个按钮组件。
  • setLayout(LayoutManager manager)
    该方法用于设置面板的布局管理器,其中manager表示要使用的布局管理器。例如,panel.setLayout(new BorderLayout())将设置面板的布局管理器为边界布局管理器。
  • getPreferredSize()
    该方法用于获取面板的首选大小,即面板的推荐尺寸。例如,Dimension size = panel.getPreferredSize()将获取面板的首选大小,并将其存储在一个Dimension对象中。

需要注意的是,JPanel默认使用流式布局管理器FlowLayout,该布局管理器按照添加顺序排列组件,并根据组件的首选大小自动调整其位置和大小。如果需要使用其他布局管理器,需要通过setLayout()方法来设置。

另外,JPanel还可以使用setBorder()方法来设置面板的边框样式,使用setBackground()方法来设置面板的背景色等等。JPanel的灵活性和多功能性使得它成为Swing界面设计中不可或缺的一部分。

(二)使用JPanel的场景如下

  • 实现复杂的布局
    当需要将多个Swing组件组合在一起,并且需要进行复杂的布局时,可以使用JPanel。JPanel可以嵌套在其他容器中,如JFrame、JDialog等等,并且可以使用不同的布局管理器来控制子组件的位置和大小,以实现各种复杂的布局效果。
  • 分组显示相关组件
    当需要将多个相关的Swing组件放置在一起,并对其进行分组显示时,可以使用JPanel。例如,一个包含多个按钮和标签的设置面板,可以将按钮和标签分别放置在不同的JPanel中,并将它们嵌套在同一个容器中。
  • 显示动态的组件
    当需要动态地添加、删除或更改组件时,可以使用JPanel。JPanel提供了add()、remove()等方法,可以方便地添加和删除子组件,并且可以使用repaint()方法来强制刷新面板中的所有组件,以实现动态的显示效果。
  • 实现重用的自定义组件
    当需要创建可重用的自定义组件时,可以使用JPanel。JPanel可以作为自定义组件的基础容器,可以将其他Swing组件放置在其中,并将其封装为一个独立的可重用组件,以方便在不同的应用程序中进行复用。

总的来说,JPanel是Swing中常用的容器组件,用于将其他Swing组件放置在一起,形成一个组件集合。它可以嵌套在其他容器中,如JFrame、JDialog等等,并且可以用于实现复杂的布局、分组显示相关组件、显示动态的组件以及实现重用的自定义组件等等。

(三)常用布局管理器

Java提供了多种布局管理器,用于控制组件在容器中的排列方式。以下是一些常用的布局管理器:

1. BorderLayout

描述:将容器分成5个区域:北、南、东、西和中心,各个组件可以填充其中一个或多个区域。

使用场景:适合用于将组件分割成不同的区域。

代码示例

JFrame frame = new JFrame("BorderLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());

frame.add(new JButton("North"), BorderLayout.NORTH);
frame.add(new JButton("South"), BorderLayout.SOUTH);
frame.add(new JButton("East"), BorderLayout.EAST);
frame.add(new JButton("West"), BorderLayout.WEST);
frame.add(new JButton("Center"), BorderLayout.CENTER);

frame.pack();
frame.setVisible(true);

2. FlowLayout

描述:按照添加组件的顺序,从左往右依次排列组件,如果一行排不下就自动换行。

使用场景:适合用于流式布局,将组件一行一行地排列。

代码示例

JFrame frame = new JFrame("FlowLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());

frame.add(new JButton("Button 1"));
frame.add(new JButton("Button 2"));
frame.add(new JButton("Button 3"));

frame.pack();
frame.setVisible(true);
\```

### 3. GridLayout

**描述**:将容器分成指定的行数和列数的网格,组件按照顺序填充到每个单元格中。

**使用场景**:适合用于按网格布局排列组件。

**代码示例**:

```java
JFrame frame = new JFrame("GridLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(3, 2));

frame.add(new JButton("Button 1"));
frame.add(new JButton("Button 2"));
frame.add(new JButton("Button 3"));
frame.add(new JButton("Button 4"));
frame.add(new JButton("Button 5"));
frame.add(new JButton("Button 6"));

frame.pack();
frame.setVisible(true);

4. CardLayout

描述:将容器中的组件按照卡片的方式进行切换,每次只显示其中一个组件。

使用场景:适合用于在多个组件之间进行切换。

代码示例

JFrame frame = new JFrame("CardLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

CardLayout cardLayout = new CardLayout();
frame.setLayout(cardLayout);

frame.add(new JLabel("Card 1"), "card1");
frame.add(new JLabel("Card 2"), "card2");

frame.pack();
frame.setVisible(true);

// 切换到下一张卡片
cardLayout.next(frame.getContentPane());

5. BoxLayout

描述:将组件按照水平或垂直方向进行排列,可以指定每个组件的最小和最大尺寸。

使用场景:适合按照水平或垂直方向排列组件,并指定最小和最大尺寸。

代码示例

JFrame frame = new JFrame("BoxLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));

frame.add(new JButton("Button 1"));
frame.add(new JButton("Button 2"));
frame.add(new JButton("Button 3"));

frame.pack();
frame.setVisible(true);

6. GridBagLayout

描述:一种灵活的布局管理器,可以为组件指定行、列、宽度、高度、填充方式等属性。

使用场景:适合用于实现更复杂的布局需求。

代码示例

JFrame frame = new JFrame("GridBagLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridBagLayout());

GridBagConstraints constraints = new GridBagConstraints();

// 添加 Button 1
constraints.gridx = 0;
constraints.gridy = 0;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.fill = GridBagConstraints.HORIZONTAL;
frame.add(new JButton("Button 1"), constraints);

// 添加 Button 2
constraints.gridx = 1;
constraints.gridy = 0;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.fill = GridBagConstraints.HORIZONTAL;
frame.add(new JButton("Button 2"), constraints);

// 添加 Button 3
constraints.gridx = 0;
constraints.gridy = 1;
constraints.gridwidth = 2;
constraints.gridheight = 1;
constraints.fill = GridBagConstraints.HORIZONTAL;
frame.add(new JButton("Button 3"), constraints);

frame.pack();
frame.setVisible(true);

以上就是Java中常用的布局管理器。

二、常用事件处理响应

Java的Listener是用于事件处理的一种机制,主要用于接收和处理用户界面上的各种事件。下面介绍一些常用的Listener方法和接口:

  • ActionListener接口:用于处理按钮、菜单等组件的动作事件。
  • MouseListener接口:用于处理鼠标事件,如鼠标单击、鼠标移动等。
  • KeyListener接口:用于处理键盘事件,如键盘按下、键盘释放等。
  • FocusListener接口:用于处理焦点事件,如组件获得焦点、组件失去焦点等。
  • ItemListener接口:用于处理复选框和单选按钮的选择事件。
  • WindowListener接口:用于处理窗口事件,如窗口打开、窗口关闭等。

三、上面接口对应的适配器(减少接口中方法的重写)

在Java中,适配器类是一种实现某个接口但并不完全实现该接口的类。它可以作为接口的中间层,使得我们在实现接口方法时,只需要重写自己需要的方法,而不需要全部重写。常见的适配器类包括:

  • MouseAdapter类:实现了MouseListener和MouseWheelListener接口,但其中的方法都是空实现,方便我们使用时只重写需要的方法。
  • KeyAdapter类:实现了KeyListener接口,但其中的方法都是空实现我们使用时只重写需要的方法。
  • WindowAdapter类:实现了WindowListener接口和WindowFocusListener接口,但其中的方法都是空实现,方便我们使用时只重写需要的方法。
  • ComponentAdapter类:实现了ComponentListener接口,但其中的方法都是空实现,方便我们使用时只重写需要的方法。
  • ContainerAdapter类:实现了ContainerListener接口,但其中的方法都是空实现,方便我们使用时只重写需要的方法。
  • FocusAdapter类:实现了FocusListener接口,但其中的方法都是空实现,方便我们使用时只重写需要的方法。

适配器类的作用是让我们在实现接口的时候不必重写全部的方法,而只需要重写我们需要的方法。这样能够减少代码的冗余,提高代码的可读性和可维护性。

四、常用函数方法

以下是一些在Java图形界面编程中常用的函数方法:

1. setText()

setText()方法用于设置组件内的文字内容。可以应用到诸如JTextFieldJButtonJLabel等组件上。

示例:设置JTextField中的文本内容。

JTextField text = new JTextField();
text.setText("请输入");

此时,text文本框内将显示“请输入”。

2. getText()

getText()方法用于提取组件内的文字。通常用于获取用户在文本框中输入的内容。

示例:从JTextField中提取输入的文本。

String input = text.getText();

3. add()

add()方法用于向容器(如JPanel和JFrame)中添加组件。

示例:向JPanel中添加一个按钮。

JPanel panel = new JPanel();
JButton button = new JButton("点击我");
panel.add(button);

4. 创建并设置基本的图形界面

以下代码展示了创建一个基本的图形界面所需的必要步骤

// 创建一个JFrame窗口并设置标题
JFrame frame = new JFrame("图形界面示例");

// 设置窗口大小
frame.setSize(450, 350);

// 设置窗口关闭操作,关闭窗口时终止程序
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// 在此处添加组件和设置布局管理器...

// 设置窗口可见性,否则运行时看不到窗口
frame.setVisible(true);

总结 

到此这篇关于Java图形界面的文章就介绍到这了,更多相关Java图形界面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java两整数相除向上取整的方式详解(Math.ceil())

    Java两整数相除向上取整的方式详解(Math.ceil())

    在调外部接口获取列表数据时,需要判断是否已经取完了所有的值,因此需要用到向上取整,下面这篇文章主要给大家介绍了关于Java两整数相除向上取整的相关资料,需要的朋友可以参考下
    2022-06-06
  • Spring boot jpa 删除数据和事务管理的问题实例详解

    Spring boot jpa 删除数据和事务管理的问题实例详解

    这篇文章主要介绍了Spring boot jpa 删除数据和事务管理的问题实例详解,涉及业务场景的一些知识和遇到的的问题,需要的朋友可以参考。
    2017-09-09
  • elasticsearch的zenDiscovery和master选举机制原理分析

    elasticsearch的zenDiscovery和master选举机制原理分析

    这篇文章主要介绍了elasticsearch的zenDiscovery和master选举机制原理分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • springboot全局字符编码设置解决乱码问题

    springboot全局字符编码设置解决乱码问题

    这篇文章主要介绍了springboot全局字符编码设置解决乱码问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • SpringBoot多数据源读写分离的自定义配置问题及解决方法

    SpringBoot多数据源读写分离的自定义配置问题及解决方法

    这篇文章主要介绍了SpringBoot多数据源读写分离的自定义配置,我们可以通过自定义配置数据库配置类来解决这个问题,方式有很多,不同的业务采用的方式也不同,下面我简单的介绍我们项目的使用的方法
    2022-06-06
  • Spring中的Aware接口详细解析

    Spring中的Aware接口详细解析

    这篇文章主要介绍了Spring中的Aware接口详细解析,Aware是一个具有标识作用的超级接口,具体实现是有子接口去决定的,但是子接口至少要有一个带一个参数的且返回是空的方法,需要的朋友可以参考下
    2023-12-12
  • Java+opencv3.2.0实现hough直线检测

    Java+opencv3.2.0实现hough直线检测

    这篇文章主要为大家详细介绍了Java+opencv3.2.0之hough直线检测,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • springboot拦截器无法注入redisTemplate的解决方法

    springboot拦截器无法注入redisTemplate的解决方法

    在工作中我们经常需要做登录拦截验证或者其他拦截认证功能,但是在写拦截器的时候发现redisTemplate一直无法注入进来,本文就详细的介绍了解决方法,感兴趣的可以了解一下
    2021-06-06
  • 解决IDEA 左侧Project中没有out文件夹的问题

    解决IDEA 左侧Project中没有out文件夹的问题

    这篇文章主要介绍了解决IDEA 左侧Project中没有out文件夹的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 一篇文章带你入门Java Script

    一篇文章带你入门Java Script

    这篇文章主要介绍了新手入门JavaScript的的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2021-08-08

最新评论