JavaGUI之Swing简单入门示例

Posted chzhm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaGUI之Swing简单入门示例相关的知识,希望对你有一定的参考价值。

简介

  • AWT(译:抽象窗口工具包),是Java的平台独立的窗口系统,图形和用户界面器件工具包。
  • Swing 是为了解决 AWT 存在的问题而以 AWT 为基础新开发的包(在使用Swing时也常会用到java.awt.*包)。

JFrame

JFrame容器允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。我们可以直接new一个JFrame对象,也可以自己实现一个类继承它(常用)。

常用方法

  • 设置窗口可见:setVisible(true);//默认为false
  • 设置窗口标题;setTitle(String title)
  • 设置点击窗口的×后执行的操作:setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

各参数定义:

EXIT_ON_CLOSE 隐藏窗口,并退出程序
DO_NOTHING_ON_CLOSE 无任何操作
HIDE_ON_CLOSE 隐藏窗体,但不停止程序
DISPOSE_ON_CLOSE 释放窗体资源

 

  • 设置窗体的大小(单位:像素):setSize(int width, int height);

 

 

  • 设置窗体坐标(单位:像素):setLocation(int x, int y);

 

  • 坐标大小一起设置:setBounds(int x, int y, int width, int height);
  • 获取窗口坐标:横坐标:getX();纵坐标:getY()
  • 获取窗口大小:宽:getWidth();高:getHeight()
  • 获取窗口容器:Container contentPane = getContentPane();

设置背景:contentPane.setBackground(Color.GREEN)

添加组件:contentPane.add(Component comp)

验证容器中的组件(相当于刷新):contentPane.validate()

重新载入容器可实现刷新效果:setContentPane(contentPane) //一般使用validate()

设置布局:contentPane.setLayout(LayoutManager mgr);

 常见组件

按钮:JButton

复选框组件:JCheckbox 

下拉列表框:JCombox 

标签组件:JLabel 

单选按钮:JRadioButton

框列表框:JList

文本框:JTextField 

密码框:JPasswordField

文本域:JTextArea

对话框:JOptionPane

代码示例

JDialog对话框

技术图片
 1 package com.czm;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 import java.awt.event.ActionEvent;
 6 import java.awt.event.ActionListener;
 7 
 8 /**
 9  * 对话框
10  */
11 public class Demo02 extends JDialog {
12 
13     public Demo02(JFrame jFrame) {
14         /**
15          * 父窗体对象,对话框标题, 是否阻塞父窗体(只能弹出一个对话框,弹出后不能点击父窗体)
16          */
17         super(jFrame, "对话框标题", true);
18         Container contentPane = getContentPane();
19         contentPane.add(new JLabel("这是一个对话框"));
20         setBounds(300, 300, 300, 300);
21     }
22 
23     public static void main(String[] args) {
24         JFrame jFrame = new JFrame("父窗体");
25         jFrame.setBounds(200,200,500,500);
26         Container contentPane = jFrame.getContentPane();
27         JButton button = new JButton("弹出对话框");
28         //设置布局,使用流布局
29         contentPane.setLayout(new FlowLayout());
30         contentPane.add(button);
31         jFrame.setVisible(true);
32         jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
33 
34 //        button.addActionListener(new ActionListener() {
35 //            @Override
36 //            public void actionPerformed(ActionEvent e) {
37 //                Demo02 demo02 = new Demo02(jFrame);
38 //                //设置对话框可见
39 //                demo02.setVisible(true);
40 //            }
41 //        });
42 
43         //Lambda 表达式
44         button.addActionListener((e)->{
45             Demo02 demo02 = new Demo02(jFrame);
46                 //设置对话框可见
47                 demo02.setVisible(true);
48         });
49 
50     }
51 }
View Code

使用JLabel标签添加图片

技术图片
 1 package com.czm;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 import java.net.URL;
 6 
 7 /**
 8  * 使用JLabel标签添加图片
 9  */
10 public class Demo03 extends JFrame {
11     public Demo03(){
12         setTitle("显示图片窗口");
13         setVisible(true);
14         setBounds(300, 300, 400, 400);
15         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
16         Container contentPane = getContentPane();
17 
18         contentPane.setBackground(Color.cyan);
19 
20         JLabel jLabel = new JLabel();
21 //        URL url = Demo03.class.getResource("/picture.jpg");
22 //        //获取相应路径下的图片
23 //        Icon icon = new ImageIcon(url);
24 
25         ImageIcon icon = new ImageIcon("src/picture.jpg");
26         System.out.println(icon.getIconHeight()+"#"+icon.getIconWidth());
27         //使图片适应窗口
28         icon.setImage(icon.getImage().getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT));
29         //添加图片
30         jLabel.setIcon(icon);
31         // 即使设置标签大小,也不会改变图片大小
32 //        jLabel.setSize(20, 20);
33 
34         System.out.println(icon.getIconHeight()+"#"+icon.getIconWidth());
35 
36         contentPane.add(jLabel);
37         //刷新
38         contentPane.validate();
39     }
40 
41     public static void main(String[] args) {
42         new Demo03();
43     }
44 }
View Code

设置布局

技术图片
 1 package com.czm;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 
 6 /**
 7  * 设置布局
 8  */
 9 public class Demo04 extends JFrame {
10 
11     public Demo04(){
12         setTitle("布局");
13         setBounds(300, 300, 400, 400);
14         setVisible(true);
15         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
16 
17         Container contentPane = getContentPane();
18         /**
19          *   绝对布局(参数为null时为绝对布局),即各组件位置按像素设定
20          *   各组件位置大小不会随窗口改变而该变
21          *
22         contentPane.setLayout(null);
23         JButton bb = new JButton("按钮1");
24         JButton bb2 = new JButton("按钮2");
25         // 设置组件在窗体位置及大小(不设置无法显示)
26         bb.setBounds(10, 10,100,100);
27         bb2.setBounds(200, 200,100,100);
28         contentPane.add(bb);
29         contentPane.add(bb2);
30          */
31         /**
32          *  设置布局,不设置默认边界布局
33          *  使用流布局(组件会随窗体大小而改变),不传参数默认居中对齐,
34          *  参数:对齐方式、水平间距、垂直间距
35          *
36 
37         contentPane.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 30));
38         for (int i = 0; i < 10; i++){
39             contentPane.add(new JButton("b"+i));
40         }
41          */
42         /**
43         //使用边界布局
44         contentPane.setLayout(new BorderLayout());
45         JButton b1 = new JButton("中"),
46                 b2 = new JButton("东"),
47                 b3 = new JButton("西"),
48                 b4 = new JButton("南"),
49                 b5 = new JButton("北");
50         //中部添加(不指明方位默认为中部)
51         contentPane.add(b1, BorderLayout.CENTER);
52         //东部
53         contentPane.add(b2, BorderLayout.EAST);
54         //西部
55         contentPane.add(b3, BorderLayout.WEST);
56         //南部
57         contentPane.add(b4, BorderLayout.SOUTH);
58         //北部
59         contentPane.add(b5, BorderLayout.NORTH);
60         //新组件会覆盖旧组件
61         contentPane.add(new JButton("覆盖"), BorderLayout.NORTH);
62 
63         */
64 
65         /**
66          * 网格布局GridLayout(行数, 列数,列距,行距)(列距,行距可省略,默认为0)
67 
68         contentPane.setLayout(new GridLayout(4, 5,5,10));
69         for (int i=0; i < 20; i++){
70             contentPane.add(new JButton("按钮"+i));
71         }
72         //超过规格会自动扩充适应
73         contentPane.add(new JButton("超过的按钮"));
74          */
75 
76         //刷新
77         contentPane.validate();
78     }
79 
80     public static void main(String[] args) {
81         new Demo04();
82     }
83 }
View Code

网格组布局管理

技术图片
  1 package com.czm;
  2 
  3 import javax.swing.*;
  4 import java.awt.*;
  5 
  6 /**
  7  * 网格组布局管理
  8  */
  9 public class Demo05 {
 10     JFrame jFrame = new JFrame();
 11     Container container;
 12     void createFrame(){
 13         //设置网格组布局
 14         container = jFrame.getContentPane();
 15         container.setLayout(new GridBagLayout());
 16         jFrame.setSize(800, 600);
 17         //先设置大小再设置默认居中
 18 //        jFrame.setLocationRelativeTo(null);
 19         jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 20     }
 21     void init(){
 22         //创建约束条件
 23         GridBagConstraints g1 = new GridBagConstraints();
 24         //第一行第一列
 25         g1.gridx = 0;
 26         g1.gridy = 0;
 27         container.add(new JButton("组件1"), g1);
 28         GridBagConstraints g2 = new GridBagConstraints();
 29         //第二行第二列
 30         g2.gridx = 1;
 31         g2.gridy = 1;
 32         container.add(new JButton("组件2"), g2);
 33         GridBagConstraints g3 = new GridBagConstraints();
 34         //第四行第四列(由于第三行第三列没组件,自动补齐)
 35         g3.gridx = 3;
 36         g3.gridy = 3;
 37         container.add(new JButton("组件3"), g3);
 38     }
 39 
 40     void init2(){
 41         //创建约束条件
 42         GridBagConstraints g1 = new GridBagConstraints();
 43         //第一行第一列
 44         g1.gridx = 1;
 45         g1.gridy = 1;
 46         //宽高各占一格
 47         g1.gridwidth = 1;
 48         g1.gridheight = 1;
 49         container.add(new JButton("none"), g1);
 50         GridBagConstraints g2 = new GridBagConstraints();
 51         //第二行第二列
 52         g2.gridx = 2;
 53         g2.gridy = 1;
 54         g2.gridwidth = 2;
 55         g2.gridheight = 1;
 56         //水平填充
 57         g2.fill = GridBagConstraints.HORIZONTAL;
 58         container.add(new JButton("HORIZONTAL"), g2);
 59         GridBagConstraints g3 = new GridBagConstraints();
 60         //第四行第四列(由于第三行第三列没组件,自动补齐)
 61         g3.gridx = 4;
 62         g3.gridy = 1;
 63         g3.gridwidth = 2;
 64         g3.gridheight = 2;
 65         //垂直填充
 66         g3.fill = GridBagConstraints.VERTICAL;
 67         container.add(new JButton("VERTICAL"), g3);
 68         GridBagConstraints g4 = new GridBagConstraints();
 69         //第四行第四列(由于第三行第三列没组件,自动补齐)
 70         g4.gridx = 6;
 71         g4.gridy = 1;
 72         g4.gridwidth = 2;
 73         g4.gridheight = 2;
 74         //全填充
 75         g4.fill = GridBagConstraints.BOTH;
 76         container.add(new JButton("BOTH"), g4);
 77     }
 78 
 79     /**
 80      * anchor属性(确定方位,默认CENTER居中)
 81      */
 82     void init3(){
 83         //创建约束条件
 84         GridBagConstraints g1 = new GridBagConstraints();
 85         //第一行第一列
 86         g1.gridx = 1;
 87         g1.gridy = 1;
 88         g1.gridheight = 2;
 89         g1.gridwidth = 2;
 90         g1.anchor = GridBagConstraints.NORTHEAST;
 91         container.add(new JButton("@"), g1);
 92         //创建面板
 93 //        g1.anchor = GridBagConstraints.CENTER;
 94         g1.fill = GridBagConstraints.BOTH;
 95         JPanel jPanel = new JPanel();
 96         jPanel.setBackground(Color.green);
 97         container.add(jPanel, g1);
 98     }
 99 
100     /**
101      * insert自定义位置
102      */
103     void init4(){
104         //创建约束条件
105         GridBagConstraints g1 = new GridBagConstraints();
106         //第一行第一列
107         g1.gridx = 1;
108         g1.gridy = 1;
109         g1.insets = new Insets(5,5,5,10);
110         container.add(new JButton("@"), g1);
111 
112     }
113     /**
114      * ipadx和ipady组件的首选大小(正数放大,负数缩小)
115      */
116     void init5(){
117         //创建约束条件
118         GridBagConstraints g1 = new GridBagConstraints();
119         //第一行第一列
120         g1.gridx = 1;
121         g1.gridy = 1;
122         g1.ipadx = 100;
123         g1.ipady = 10;
124         container.add(new JButton("@"), g1);
125 
126         GridBagConstraints g2 = new GridBagConstraints();
127         g2.gridx = 4;
128         g2.gridy = 2;
129         g2.ipadx = -10;
130         g2.ipady = -10;
131         container.add(new JButton("@"), g2);
132 
133     }
134 
135     /**
136      * weightx,weighty用来设置窗口变大时,各组件跟着变大的比例
137      * 窗体放大时组件2的x轴放大倍速是组件1的10倍
138      */
139     void init6(){
140         //创建约束条件
141         GridBagConstraints g1 = new GridBagConstraints();
142         //第一行第一列
143         g1.gridx = 1;
144         g1.gridy = 1;
145         g1.weightx = 0.1;
146         g1.weighty = 0.5;
147         container.add(new JButton("组件1"), g1);
148 
149         GridBagConstraints g2 = new GridBagConstraints();
150         //第一行第一列
151         g2.gridx = 2;
152         g2.gridy = 1;
153         g2.weightx = 1;
154         g2.weighty = 0.5;
155         container.add(new JButton("组件2"), g2);
156 
157     }
158     void createButton(){
159         for (int i=0; i<10; i++){
160             GridBagConstraints gg = new GridBagConstraints();
161             gg.gridx = i;
162             gg.gridy = 0;
163             container.add(new JButton("网格"), gg);
164         }
165         for (int i=0; i<10; i++){
166             GridBagConstraints gg2 = new GridBagConstraints();
167             gg2.gridx = 0;
168             gg2.gridy = i;
169             container.add(new JButton("网格"), gg2);
170         }
171 
172     }
173     public static void main(String[] args) {
174         Demo05 demo05 = new Demo05();
175         demo05.createFrame();
176         demo05.createButton();
177         demo05.init6();
178         demo05.jFrame.setVisible(true);
179     }
180 }
View Code

 下拉列表(JComboBox)

技术图片
 1 package com.czm;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 import java.awt.event.ActionEvent;
 6 import java.awt.event.ActionListener;
 7 
 8 /**
 9  * 下拉列表(JComboBox)
10  */
11 public class Demo06 extends JFrame {
12     public Demo06(){
13         setBounds(200,200, 400, 400);
14         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
15 
16         Container contentPane = getContentPane();
17         contentPane.setLayout(null);
18 
19         //下拉框
20         //向下拉框添加选项一
21 //        JComboBox<String> jComboBox = new JComboBox<>();
22 //        jComboBox.addItem("苹果");
23 //        jComboBox.addItem("荔枝");
24 //        jComboBox.addItem("桃");
25         //向下拉框添加选项二(用String数组)
26 //        String items[] = new String[]{"苹果","荔枝","芒果"};
27 //        JComboBox<String> jComboBox = new JComboBox<>(items);
28 
29         //向下拉框添加选项三(下拉列表模型)
30         JComboBox<String> jComboBox = new JComboBox<>();
31         String items[] = new String[]{"苹果","荔枝","芒果"};
32         ComboBoxModel<String> comboBoxModel = new DefaultComboBoxModel<>(items);
33         jComboBox.setModel(comboBoxModel);
34         //设置是否可输入(默认false)输入后获取的下标为-1
35         jComboBox.setEditable(true);
36 
37         jComboBox.setBounds(100, 100, 100, 30);
38 
39 
40         JButton jButton = new JButton("打印");
41         jButton.setBounds(200, 100, 100, 30);
42         jButton.addActionListener(new ActionListener() {
43             @Override
44             public void actionPerformed(ActionEvent e) {
45                 System.out.println("选中项下标:"+jComboBox.getSelectedIndex());
46                 System.out.println("选中项:"+jComboBox.getSelectedItem());
47             }
48         });
49 
50 
51         contentPane.add(jButton);
52         contentPane.add(jComboBox);
53         setVisible(true);
54     }
55 
56     public static void main(String[] args) {
57         new Demo06();
58     }
59 }
View Code

列表框JList

技术图片
 1 package com.czm;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 import java.awt.event.ActionEvent;
 6 import java.awt.event.ActionListener;
 7 import java.util.List;
 8 
 9 /**
10  * 列表框JList
11  */
12 public class Demo07 extends JFrame {
13     public Demo07(){
14         setBounds(200,200, 400, 400);
15         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
16         Container contentPane = getContentPane();
17         contentPane.setLayout(null);
18 
19         String[] items = new String[]{"a", "b", "c", "d", "e", "f", "g"};
20         //创建列表数据的模型
21         DefaultListModel<String> defaultListModel = new DefaultListModel<>();
22         for (String tem: items){
23             //向列表模型添加元素
24             defaultListModel.addElement(tem);
25         }
26         //列表
27         JList<String> jList = new JList<>();
28         jList.setModel(defaultListModel);
29 
30         /**
31          * 设置选择模式
32          * MULTIPLE_INTERVAL_SELECTION:(默认)随便选
33          * SINGLE_INTERVAL_SELECTION:只能选择相邻的元素
34          * SINGLE_SELECTION:单选
35          */
36         jList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
37 
38         //创建滚动条并添加列表
39         JScrollPane jScrollPane = new JScrollPane(jList);
40         jScrollPane.setBounds(100, 100, 100, 100);
41 
42         //使用模型可随时添加元素
43         defaultListModel.addElement("添加元素");
44 
45         contentPane.add(jScrollPane);
46         setVisible(true);
47 
48         JButton jButton = new JButton("打印");
49         jButton.setBounds(200,100,100,30);
50         jButton.addActionListener(new ActionListener() {
51             @Override
52             public void actionPerformed(ActionEvent e) {
53                 List<String> selectedValuesList = jList.getSelectedValuesList();
54                 for (String tmp: selectedValuesList){
55                     System.out.println(tmp);
56                 }
57                 System.out.println("_______end________");
58             }
59         });
60 
61         contentPane.add(jButton);
62     }
63 
64     public static void main(String[] args) {
65         new Demo07();
66     }
67 }
View Code

文本框JTextField

技术图片
 1 package com.czm;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 import java.awt.event.ActionEvent;
 6 import java.awt.event.ActionListener;
 7 
 8 /**
 9  * 文本框JTextField
10  */
11 public class Demo08 extends JFrame {
12     public Demo08(){
13         setBounds(100, 100, 400, 200);
14         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
15         Container contentPane = getContentPane();
16         contentPane.setLayout(new FlowLayout());
17 
18         //创建文本框
19         JTextField jTextField = new JTextField();
20         //设置文本框长度(单位字符)
21         jTextField.setColumns(20);
22         //设置初始值
23         jTextField.setText("初始值");
24         //设置字体格式
25         jTextField.setFont(new Font("黑体", Font.PLAIN,20));
26 
27 
28         contentPane.add(jTextField);
29 
30         JButton jButton = new JButton("确认");
31         jButton.addActionListener(new ActionListener() {
32             @Override
33             public void actionPerformed(ActionEvent e) {
34                 System.out.println("文本框的内容:"+jTextField.getText());
35                 //清空文本框
36                 jTextField.setText("");
37                 //获取焦点
38                 jTextField.requestFocus();
39             }
40         });
41 
42         contentPane.add(jButton);
43         setVisible(true);
44     }
45 
46     public static void main(String[] args) {
47         new Demo08();
48     }
49 }
View Code

密码框

技术图片
 1 package com.czm;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 import java.awt.event.ActionEvent;
 6 import java.awt.event.ActionListener;
 7 
 8 /**
 9  * 密码框
10  */
11 public class Demo09 extends JFrame {
12     public Demo09(){
13         setBounds(200, 200, 400, 100);
14         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
15         Container contentPane = getContentPane();
16         contentPane.setLayout(new FlowLayout());
17 
18         //创建密码框组件
19         JPasswordField jPasswordField = new JPasswordField();
20         //设置密码框长度,20个字符
21         jPasswordField.setColumns(20);
22 
23         //设置回显字符(屏幕上看到我们输入的字符)
24         jPasswordField.setEchoChar(‘#‘);
25         //设置字体
26         jPasswordField.setFont(new Font("黑体", Font.BOLD, 18));
27 
28         //添加监听(回车时触发)
29         jPasswordField.addActionListener(new ActionListener() {
30             @Override
31             public void actionPerformed(ActionEvent e) {
32                 char[] password = jPasswordField.getPassword();
33                 System.out.println(new String(password));
34             }
35         });
36 
37         contentPane.add(jPasswordField);
38 
39         setVisible(true);
40 
41     }
42 
43     public static void main(String[] args) {
44         new Demo09();
45     }
46 }
View Code

文本域

技术图片
 1 package com.czm;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 
 6 /**
 7  * 文本域
 8  */
 9 public class Demo10 extends JFrame {
10     public Demo10(){
11         setBounds(200, 200, 400, 400);
12         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
13         Container contentPane = getContentPane();
14         contentPane.setLayout(new FlowLayout());
15 
16         //创建文本域
17         JTextArea jTextArea = new JTextArea();
18         //设定文本内容
19         jTextArea.setText("初始内容");
20         //设定行
21         jTextArea.setRows(5);
22         //设定列数
23         jTextArea.setColumns(20);
24         //添加内容
25         jTextArea.append("添加内容");
26         //在第二个字符后面插入内容
27         jTextArea.insert("【插入内容】", 2);
28         //给文本域添加滚动条
29         JScrollPane jScrollPane = new JScrollPane(jTextArea);
30         contentPane.add(jScrollPane);
31         setVisible(true);
32     }
33 
34     public static void main(String[] args) {
35         new Demo10();
36     }
37 }
View Code

事件监听

技术图片
 1 package com.czm;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 import java.awt.event.ActionEvent;
 6 import java.awt.event.ActionListener;
 7 import java.awt.event.FocusEvent;
 8 import java.awt.event.FocusListener;
 9 
10 /**
11  * 事件监听
12  */
13 public class Demo11 extends JFrame {
14     public Demo11(){
15         setBounds(200, 200, 400, 400);
16         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
17         Container contentPane = getContentPane();
18         contentPane.setLayout(new FlowLayout());
19 
20 
21         JLabel jLabel = new JLabel("标签");
22         JButton jButton = new JButton("按钮");
23         jButton.addActionListener(new ActionListener() {
24             @Override
25             public void actionPerformed(ActionEvent e) {
26                 jLabel.setText("按钮被点击");
27             }
28         });
29 
30         JTextField jTextField = new JTextField();
31         //设置文本框长度(单位字符)
32         jTextField.setColumns(20);
33         //设置初始值
34         jTextField.setText("初始值");
35         //设置字体格式
36         jTextField.setFont(new Font("黑体", Font.PLAIN,20));
37 
38         jTextField.addFocusListener(new MyFocusListenter());
39 
40 //        jTextField.addFocusListener(new FocusListener() {
41 //            @Override
42 //            public void focusGained(FocusEvent e) {
43 //
44 //            }
45 //
46 //            @Override
47 //            public void focusLost(FocusEvent e) {
48 //
49 //            }
50 //        });
51 
52         contentPane.add(jTextField);
53         contentPane.add(jLabel);
54         contentPane.add(jButton);
55         setVisible(true);
56     }
57 
58     //实现焦点事件监听器
59     class MyFocusListenter implements FocusListener{
60         //获取焦点
61         @Override
62         public void focusGained(FocusEvent e) {
63             //获取触发事件的文本框
64             JTextField source = (JTextField) e.getSource();
65             //给获取焦点的文本框设置绿色边框
66             source.setBorder(BorderFactory.createLineBorder(Color.green));
67             source.setText("获得焦点");
68         }
69 
70         //离焦
71         @Override
72         public void focusLost(FocusEvent e) {
73             //获取触发事件的文本框
74             JTextField source = (JTextField) e.getSource();
75             //给失去焦点的文本框设置绿色边框
76             source.setBorder(BorderFactory.createLineBorder(Color.red));
77             source.setText("失去焦点");
78         }
79     }
80     public static void main(String[] args) {
81         new Demo11();
82     }
83 }
View Code

 

 

  

以上是关于JavaGUI之Swing简单入门示例的主要内容,如果未能解决你的问题,请参考以下文章

JavaGUI组件学习之JFrame

JavaGUI组件学习之JFrame

Swing入门——简单了解+demo

JavaGUI实现贪吃蛇

java GUI中按钮内的按钮

我在对齐元素时遇到问题(Java GUI / Swing);