开发者

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

开发者 https://www.devze.com 2024-01-13 10:18 出处:网络 作者: m0_62526778
目录一、常用组件1. JFrame2. JPanel3. JLabel4. JTextField5. JButton6. JCheckBox7. JRadioButton8. JComboBox9. JList(一)JPanel中常用方法(二)使用JPanel的场景如下(三)常用布局管理器二、常用事件处理响应
目录
  • 一、常用组件
    • 1. JFrame
    • 2. JPanel
    • 3. JLabel
    • 4. JTextField
    • 5. JButton
    • 6. JCheckBox
    • 7. JRadioButton
    • 8. JComboBox
    • 9. JList
      • (一)JPanel中常用方法
      • (二)使用JPanel的场景如下
      • (三)常用布局管理器
  • 二、常用事件处理响应
    • 三、上面接口对应的适配器(减少接编程口中方法的重写)
      • 四、常编程客栈用函数方法
        • 1. setText()
          • 2. getText()
            • 3. add()
              • 4. 创建并设置基本的图形界面
              • 总结 

                一、常用组件

                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、JDialogpython等等,并且可以用于实现复杂的布局、分组显示相关组件、显示动态的组件以及实现重用的自定义组件等等。

                (三)常用布局管理器

                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");
                frwww.devze.comame.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类:实现了Win编程dowListener接口和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图形界面内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

                0

                精彩评论

                暂无评论...
                验证码 换一张
                取 消

                关注公众号