其他分享
首页 > 其他分享> > chapter8

chapter8

作者:互联网

1.Swing概述

2.Swing顶级容器

2.1.Jframe

2.1.1.概述

2.1.2.示例

class Test {
    private static void createAndShowGUI() {
        // 创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameTest");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置关闭窗口时的默认操作
        frame.setSize(250, 150);     // 设置窗口尺寸
        frame.setVisible(true);      // 展示JFrame容器窗口
        freme.setLocation(300, 200); // 设置窗口的位置
	}
    public static void main(String[] args) {
          //使用SwingUtilities工具类调用createAndShowGUI()方法显示GUI程序
          SwingUtilities.invokeLater(Test::createAndShowGUI);
    }
}

2.2.JDialog

2.2.1.概述

2.2.2.构造方法

方法声明功能描述
JDialog(Frame owner)创建一个非模态的对话框,owner为对话框所有者(顶级窗口JFrame)
JDialog(Frame owner, String title)创建一个具有指定标题的非模态对话框
JDialog(Frame owner, boolean modal)创建一个有指定模式的无标题对话框,默认值false(即非模态对话框)
JDialog(Frame owner, String title, boolean modal)创建一个具有指定标题和模态的对话框

2.2.3.示例

class Test {
    private static void createAndShowGUI() {
        // 创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameTest");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置关闭窗口时的默认操作
        frame.setSize(250, 150);     // 设置窗口尺寸
        frame.setVisible(true);      // 展示JFrame容器窗口
        freme.setLocation(300, 200); // 设置窗口的位置
        
        JDialog dialog = new JDialog(frame, "JDialog对话框", true);
        dialog.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置关闭窗口时的默认操作
        dialog.setSize(200, 100);     // 设置窗口尺寸
        dialog.setVisible(true);      // 展示JDialog
        dialog.setLocation(30, 20);  // 设置窗口的位置
	}
    public static void main(String[] args) {
          //使用SwingUtilities工具类调用createAndShowGUI()方法显示GUI程序
          SwingUtilities.invokeLater(Test::createAndShowGUI);
    }
}

3.布局管理器

3.1.BorderLayout

3.1.1.概述

3.1.2.使用

3.1.3.示例

class Test {
    private static void createAndShowGUI() {
        // 创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameTest");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置关闭窗口时的默认操作
        frame.setSize(250, 150);     // 设置窗口尺寸
        frame.setVisible(true);      // 展示JFrame容器窗口
        freme.setLocation(300, 200); // 设置窗口的位置
        
        frame.setLayout(new BorderLayout()); // 设置布局模式
        
		frame.add(new JButton("PAGE_START"), BorderLayout.PAGE_START);
		frame.add(new JButton("LINE_START"), BorderLayout.LINE_START);
		frame.add(new JButton("CENTER"), BorderLayout.CENTER);
		frame.add(new JButton("LINE_END"), BorderLayout.LINE_END);
		frame.add(new JButton("PAGE_END"), BorderLayout.PAGE_END);
	}
    public static void main(String[] args) {
          //使用SwingUtilities工具类调用createAndShowGUI()方法显示GUI程序
          SwingUtilities.invokeLater(Test::createAndShowGUI);
    }
}

3.1.4.注意

3.2.FlowLayout

3.2.1.概述

3.2.2.构造方法

方法声明功能描述
FlowLayout()组件默认居中对齐,水平、垂直间距默认为5个单位
FlowLayout(int align)指定组件相对于容器的对齐方式,水平、垂直间距默认为5个单位
FlowLayout(int align, int hgap, int vgap)指定组件的对齐方式和水平、垂直间距

3.2.3.示例

class Test {
    private static void createAndShowGUI() {
        // 创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameTest");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置关闭窗口时的默认操作
        frame.setSize(250, 150);     // 设置窗口尺寸
        frame.setVisible(true);      // 展示JFrame容器窗口
        freme.setLocation(300, 200); // 设置窗口的位置
        
        frame.setLayout(new FlowLayout()); // 设置布局模式
        
		frame.add(new JButton("第1个按钮"));
		frame.add(new JButton("第2个按钮"));
        frame.add(new JButton("第3个按钮"));
        frame.add(new JButton("第4个按钮"));
        frame.add(new JButton("第5个按钮"));
	}
    public static void main(String[] args) {
          //使用SwingUtilities工具类调用createAndShowGUI()方法显示GUI程序
          SwingUtilities.invokeLater(Test::createAndShowGUI);
    }
}

image-20211114174142859

3.3.GridLayout

3.3.1概述

3.3.2.构造方法

方法声明功能描述
GridLayout()默认只有一行,每个组件占一列
GridLayout(int rows,int cols)指定容器的行数和列数
GridLayout(int rows,int cols,int hgap,int vgap)指定容器的行数和列数以及组件之间的水平、垂直间距

3.3.3.示例

class Test {
    private static void createAndShowGUI() {
        // 创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameTest");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置关闭窗口时的默认操作
        frame.setSize(250, 150);     // 设置窗口尺寸
        frame.setVisible(true);      // 展示JFrame容器窗口
        freme.setLocation(300, 200); // 设置窗口的位置
        
        frame.setLayout(new GridLayout(3, 3)); // 设置布局模式
        
        for(int i = 0; i < 9; i++) {
            frame.add(new JButton("btn" + i));
        }
	}
    public static void main(String[] args) {
          //使用SwingUtilities工具类调用createAndShowGUI()方法显示GUI程序
          SwingUtilities.invokeLater(Test::createAndShowGUI);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5I8NagU4-1637153685353)(https://i.loli.net/2021/11/14/gqM8weO2BKstLHS.png)]

4.事件处理

4.1.事件处理机制

4.1.1.事件处理涉及的三类对象

4.1.2.事件处理流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UIYqinis-1637153685354)(https://i.loli.net/2021/11/14/dOeKCwSGgBh7zDb.png)]

4.1.3.事件处理步骤

  1. 创建事件源
    • 除了一些常见的按钮、键盘等组件可以作为事件源外,包括JFrame窗口在内的顶级容器也可以作为事件源
  2. 自定义事件监听器
    • 根据要监听的事件源创建指定类型的监听器进行事件处理,该监听器是一个特殊的Java类,必须实现XxxListener接口(根据组件触发的动作进行区分,如WindowListener用于监听窗口事件,ActionListener用于监听动作事件)
  3. 为事件源注册监听器
    • 使用addXxxListener()方法为指定事件源添加特定类型的监听器。当事件源上发生监听的事件后,就会触发绑定的事件监听器,然后由监听器中的方法进行相应处理

4.2.Swing常用事件处理

4.2.1.窗体事件(WindowEvent)

class Test {
    private static void createAndShowGUI() {
        // 创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameTest");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置关闭窗口时的默认操作
        frame.setSize(250, 150);     // 设置窗口尺寸
        frame.setVisible(true);      // 展示JFrame容器窗口
        freme.setLocation(300, 200); // 设置窗口的位置
        
        frame.addWindowListener(new WindowListener() {
            public void windowOpened(WindowEvent e) {
                System.out.println("windowOpened --- 窗口打开事件");
            }
            public void windowIconified(WindowEvent e) {
                System.out.println("windowIconified --- 窗口图标化事件");
            }
            public void windowDeiconified(WindowEvent e) {
                System.out.println("windowDeiconified --- 窗口取消图标化事件");
            }
            public void windowDeactivated(WindowEvent e) {
                System.out.println("windowDeactivated --- 窗口停用事件");
            }
            public void windowClosing(WindowEvent e) {
                System.out.println("windowClosing --- 窗口正在关闭事件");
            }
            public void windowClosed(WindowEvent e) {
                System.out.println("windowClosed --- 窗口关闭事件");
            }
            public void windowActivated(WindowEvent e) {
                System.out.println("windowActivated --- 窗口激活事件");
            }
        })
	}
    public static void main(String[] args) {
          //使用SwingUtilities工具类调用createAndShowGUI()方法显示GUI程序
          SwingUtilities.invokeLater(Test::createAndShowGUI);
    }
}

4.2.2.鼠标事件(MouseEvent)

class Test {
    private static void createAndShowGUI() {
        // 创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameTest");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置关闭窗口时的默认操作
        frame.setSize(250, 150);     // 设置窗口尺寸
        frame.setVisible(true);      // 展示JFrame容器窗口
        freme.setLocation(300, 200); // 设置窗口的位置
        
        frame.addMouseListener(new MouseListener() {
            public void mouseReleased(MouseEvent e) {
                System.out.println("mouseReleased --- 鼠标放开事件");
            }
            public void mousePressed(MouseEvent e) {
                System.out.println("mousePressed --- 鼠标按下事件");
            }
            public void mouseExited(MouseEvent e) {
                System.out.println("mouseExited --- 鼠标移出按钮区域事件");
            }
            public void mouseEntered(MouseEvent e) {
                System.out.println("mouseEntered --- 鼠标进入按钮区域事件");
            }
            public void mouseClicked(MouseEvent e) {
                System.out.println("mouseClicked --- 鼠标完成单击事件");
            }
        })
	}
    public static void main(String[] args) {
          //使用SwingUtilities工具类调用createAndShowGUI()方法显示GUI程序
          SwingUtilities.invokeLater(Test::createAndShowGUI);
    }
}

4.2.3.键盘事件(KeyEvent)

class Test {
    private static void createAndShowGUI() {
        // 创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameTest");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置关闭窗口时的默认操作
        frame.setSize(250, 150);     // 设置窗口尺寸
        frame.setVisible(true);      // 展示JFrame容器窗口
        freme.setLocation(300, 200); // 设置窗口的位置
        
        JTextField tf = new JTextField(30);
        frame.add(tf);
        
        tf.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                char keyChar = e.getKeyChar();	//获取对应的键盘字符
                int keyCode = e.getKeyCode();	//获取对应的键盘字符代码(ASSCII编码)
                System.out.println("keyPressed --- 鼠标放开事件");
            }
        })
	}
    public static void main(String[] args) {
          //使用SwingUtilities工具类调用createAndShowGUI()方法显示GUI程序
          SwingUtilities.invokeLater(Test::createAndShowGUI);
    }
}

4.2.4.动作事件(ActionEvent)

class Test {
    private static void createAndShowGUI() {
        // 创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameTest");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置关闭窗口时的默认操作
        frame.setSize(250, 150);     // 设置窗口尺寸
        frame.setVisible(true);      // 展示JFrame容器窗口
        freme.setLocation(300, 200); // 设置窗口的位置
        
        JButton btn = new JButton("按钮");
        frame.add(btn);
        
        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("用户点击了按钮");
                e.getActionCommand();	//而e.getActionCommand方法返回的是触发者的名字(String)
                e.getSource();	//而e.getSource方法返回的是对象
            }
        })
	}
    public static void main(String[] args) {
          //使用SwingUtilities工具类调用createAndShowGUI()方法显示GUI程序
          SwingUtilities.invokeLater(Test::createAndShowGUI);
    }
}

5.Swing常用组件

5.1.面板组件

5.1.1.JPanel

5.1.2.JScrollPane

5.1.2.1.概述
5.1.2.2.构造方法
方法声明功能描述
JScrollPane()创建一个空的JScrollPane面板
JScrollPane(Component view)创建一个显示指定组件的JScrollPane面板,只要组件的内容超过视图大小就会显示水平和垂直滚动条
JScrollPane(Component view, int vsbPolicy,int hsbPolicy)创建一个显示指定容器、并具有指定滚动条策略的JScrollPane。参数vsbPolicy和hsbPolicy分别表示垂直滚动条策略和水平滚动条策略
5.1.2.3.设置面板滚动策略的方法
方法声明功能描述
void setHorizontalBarPolicy(int policy)指定水平滚动条策略,即水平滚动条何时显示在滚动面板上
void setVerticalBarPolicy(int policy)指定垂直滚动条策略,即垂直滚动条何时显示在滚动面板上
void setViewportView(Component view)设置在滚动面板显示的组件
5.1.2.4.滚动策略常量值
常量属性功能描述
VERTICAL_SCROLLBAR_AS_NEEDED HORIZONTAL_SCROLLBAR_AS_NEEDED当填充的组件视图超过客户端窗口大小时,自动显示水平和竖直放行滚动条(JscrollPane组件的默认值)
VERTICAL_SCROLLBAR_ALWAYS HORIZONTAL_SCROLLBAR_ALWAYS无论填充的组件视图大小,始终显示水平和竖直放行滚动条
VERTICAL_SCROLLBAR_NEVER HORIZONTAL_SCROLLBAR_NEVER无论填充的组件视图大小,始终不显示水平和竖直放行滚动条

5.2.文本组件

方法声明功能描述
String String getText()返回文本组件中所有的文本内容
String getSelectedText()返回文本组件中选定的文本内容
void selectAll()在文本组件中选中所有内容
void setEditable()设置文本组件为可编辑或者不可编辑状态
void setText(String text)设置文本组件的内容
void replaceSelection(String content)用给定的内容替换当前选定的内容

5.2.1.JTextField

方法声明功能描述
JTextField()创建一个空的文本框,初始字符串为null
JTextFiled(int columns)创建一个具有指定列数的文本框,初始字符串为null
JTextField(String text)创建一个显示指定初始字符串的文本框
JTextField(String text,int column)创建一个具有指定列数、并显示指定初始字符串的文本框

5.2.2.JTextArea

方法声明功能描述
JTextArea()构造方法,创建一个空的文本域
JTextArea(String text)构造方法,创建显示指定初始字符串的文本域
JTextArea(int rows,int columns)构造方法,创建具有指定行和列的空的文本域
JTextArea(String text,int rows,int columns)构造方法,创建显示指定初始文本并指定了行列的文本域

5.3.标签组件

方法声明功能描述
JLabel()创建无图像并且其标题为空字符串的JLabel
JLabel(Icon image)创建具有指定图像的JLabel实例
JLabel(Icon image, int horizontalAlignment)创建具有指定图像和水平对齐方式的JLabel实例
JLabel(String text)创建具有指定文本的JLabel实例
JLabel(String text, Icon icon, int horizontalAlignment)创建具有指定文本、图像和水平对齐方式的 JLabel 实例
JLabel(String text, int horizontalAlignment)创建具有指定文本和水平对齐方式的 JLabel 实例

5.4.按钮组件

AbstractButton常用方法

方法声明功能描述
Icon getIcon()获取按钮的图标
void setIcon(Icon icon)设置按钮的图标
String getText()获取按钮的文本
void setText(String text)设置按钮的文本
void setEnable(boolean b)设置按钮是否可用
boolean setSelected(boolean b)设置按钮是否为选中状态
boolean isSelected()返回按钮的状态(true为选中,反之为未选中)

5.4.1.JCheckBox

方法声明功能描述
JCheckBox()创建一个没有文本信息,初始状态未被选中的复选框
JCheckBox(String text)创建一个带有文本信息,初始状态未被选定的复选框
JCheckBox(String text,boolean selected)创建一个带有文本信息,并指定初始状态(选中/未选中)的复选框

5.4.2.JRadioButton

方法声明功能描述
JRadioButton ()创建一个没有文本信息、初始状态未被选中的单选框
JRadioButton (String text)创建一个带有文本信息、初始状态未被选定的单选框
JRadioButton (String text,boolean selected)创建一个具有文本信息,并指定初始状态(选中/未选中)的单选框

5.5.下拉框组件

5.5.1.概述

5.5.2.构造方法

方法声明功能描述
JComboBox()创建一个没有可选项的下拉框
JComboBox(Object[] items)创建一个下拉框,将Object数组中的元素作为下拉框的下拉列表选项
JComboBox(Vector items)创建一个下拉框,将Vector集合中的元素作为下拉框的下拉列表选项

5.5.3.JComboBox常用方法

方法声明功能描述
void addItem(Object anObject)为下拉框添加选项
void insertItemAt(Object anObject,int index)在指定的索引处插入选项
Objct getItemAt(int index)返回指定索引处选项,第一个选项的索引为0
int getItemCount()返回下拉框中选项的数目
Object getSelectedItem()返回当前所选项
void removeAllItems()删除下拉框中所有的选项
void removeItem(Object object)从下拉框中删除指定选项
void removeItemAt(int index)移除指定索引处的选项
void setEditable(boolean aFlag)设置下拉框的选项是否可编辑,aFlag为true则可编辑,反之则不可编辑

5.6.菜单组件

5.6.1.下拉式菜单

5.6.1.1.JMenuBar(菜单栏)
5.6.1.2.JMenu(菜单栏)
方法声明功能描述
JMenuItem add(JMenuItem menuItem)将菜单项添加到菜单末尾,返回此菜单项
void addSeparator()将分隔符添加到菜单的末尾
JMenuItem getItem(int pos)返回指定索引处的菜单项,第一个菜单项的索引为0
int getItemCount()返回菜单上的项数,菜单项和分隔符都计算在内
JMenuItem insert(JmenuItem menuItem,int pos)在指定索引处插入菜单项
void insertSeparator(int pos)在指定索引处插入分隔符
void remove(int pos)从菜单中移除指定索引处的菜单项
void remove(JMenuItem menuItem)从菜单中移除指定的菜单项
void removeAll()从菜单中移除所有的菜单项
5.6.1.3.JMenuItem(菜单栏)

5.6.2.弹出式菜单

5.6.1.3.JMenuItem(菜单栏)

5.6.2.弹出式菜单

标签:JFrame,窗口,chapter8,int,frame,组件,void
来源: https://blog.csdn.net/V_s__/article/details/121387664