Java中Swing,IO,Tread简介教程 - 图文 联系客服

发布时间 : 星期三 文章Java中Swing,IO,Tread简介教程 - 图文更新完毕开始阅读67201c07bed5b9f3f90f1c44

BoxLayoutDemo.java运行结果(以Y轴) BoxLayoutDemo.java运行结果(以X轴)

从运行结果可以看出,盒式布局管理器好像不是很聪明,就算是够宽或者够窄还是以垂直或者水平方式排列。

1.3 面板及组件

JPanel面板

JPanel面板可以聚集一些组件来布局,JPanel类继承java.awt.Container类,所以JPanel也是一个容器。在JPanel里面我们可以加上JButton,JTextArea,JTextFiled以及另外一个JPanel。下面的JPanelDemo.java程序创建了一个微型计算器的面板布局,这只是一个界面布局。当然,到后面会将计算器的功能实现。

【JPanelDemo.java】

package com.iot.panel; import javax.swing.*; import java.awt.*; publicclassJPanelDemoextends JFrame { JTextField text; public JPanelDemo() { this.setLayout(new BorderLayout()); this.setTitle(\); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel topPanel = new JPanel();//创建topPanel面板对象用来加添文本框 JPanel belowPanel = new JPanel();//创建belowPanle面板对象用来添加按钮 topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.X_AXIS)); //设置topPanel面板的布局管理器为以X轴为对齐方式的盒式布局 topPanel.setBorder(BorderFactory.createEmptyBorder(5, 10, 8, 10)); //设置此面板的边框为空白边框 JTextField text = new JTextField(\);//创建一个文本内容为\的文本域 text.setFont(new Font(\, Font.PLAIN, 25));//设置文本域的字体 text.setHorizontalAlignment(JTextField.RIGHT); //设置文本域的文本对齐方式为以右对齐 text.setEditable(false);//设置文本域不可编辑 topPanel.add(text);//将文本域添加到topPanel面板中 belowPanel.setLayout(new BorderLayout()); //设置belowPanel面板的布局管理器边界布局 belowPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 8, 10)); JPanel bCenter = new JPanel();//创建bCenter面板对象用来添加数字,运算符按钮 JPanel bRight = new JPanel();//创建bRight面板对象用来添加清除和等号按钮 bCenter.setLayout(new GridLayout(4, 4, 5, 5)); //设置bCenter的布局管理为4行4列的网格布局管理 bRight.setLayout(new GridLayout(2, 1, 5, 5)); bRight.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); JPanel bcTop = new JPanel();//用来添加\←\和\符号按钮 bcTop.setLayout(new GridLayout(2, 1, 5, 5)); //声明一个按钮数组,包括了该面板上的所有按钮 JButton[] button = { new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\), new JButton(\←\), new JButton(\), new JButton(\) }; for (int i = 0; i <= 17; i++) { bCenter.add(button[i]);//将前17个按钮依次加入到bCenter面板上 if (i >= 16) bcTop.add(button[i]);//将按钮添加到bcTop面板上 } bRight.add(bcTop);//将bcTop面板添加到bRight面板上 bRight.add(button[18]);//将最后一个按钮添加到bRight面板上 belowPanel.add(bCenter, BorderLayout.CENTER); //将bCenter面板添加到belowPanel面板的中间区域 belowPanel.add(bRight, BorderLayout.EAST); //将bRight面板添加到belowPanel面板的东方区域 this.add(topPanel, BorderLayout.NORTH);//将topPanel面板添加到窗体的北方区域 this.add(belowPanel, BorderLayout.CENTER); //将belowPanel面板添加到窗体的中间区域 } publicstaticvoid main(String[] args) { new JPanelDemo(); } }

JPanelDemo.java运行结果

该计算器的界面用到了边界布局、网格布局和盒式布局管理器,添加了一种新的组件JTextField文本框。同样JTextField也有很多设定属性的方法,还是那句话,请查阅JDK参考文档。

1.4 事件监听

创造了一个窗体,但是上面的按钮却没有功能,这跟我们平时见到的不一样。那么实现按钮的功能需要我们做些什么呢?很简单,我们只需要按钮被按下是要执行的方法和检测按钮被按下方法这两项就可以了,实现按钮的功能。

首先我们要弄清楚事件源、事件和监听程序,事件源出发一个时间,它被一个或多个“监听器”接收,监听器负责处理事件。所以,按钮被按下是需要知道它要做的事情,并且按钮要在按键事件发生是调用执行功能的方法。如果想要知道按钮的事件,就会监听事件的接口,监听接口是介于监听与事件源间的桥梁。那么,取得按钮的ActionEvent就要实现ActionListener这个接口、想按钮注册(告诉它你要监听事件)、定义事件处理的方法(实现接口上的方法)三个步骤就可以实现一个按钮的功能。下面将介绍监听事件的三种比较常用的方法。

下面的ButtonEventDemo.java实例简单介绍了如何实现监听的原理,即单一事件的监听。 【ButtonEventDemo.java】

package com.iot.event; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; publicclass ButtonEventDemo implements ActionListener{ //只有实现次接口,才会接受事件的通知 JFrame frame = newJFrame(\); JButton button = new JButton(\);//创建一个按钮 inti = 0;//该变量用来计算按钮被点击的次数 public ButtonEventDemo(){ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.getContentPane().add(button);//将按钮添加到容器上 button.addActionListener(this);//向按钮注册,告诉接口要监听事件 } publicvoid actionPerformed(ActionEvent e) { //重写的ActionListener接口的方法,这是真正处理事件的方法,并且按钮会以ActionEvent对象来调用此方法 button.setText(\+(++i)+\);//设置按钮上的文字 JOptionPane.showMessageDialog(frame,\这是点击按钮弹出的提示框!\,\信息框\,JOptionPane.INFORMATION_MESSAGE);//弹出JOptionPane对话框 } publicstaticvoid main(String[] args){ new ButtonEventDemo(); } }

ButtonEventDemo.java运行结果

从运行结果可以看出当每一次点击按钮时,都会弹出一个对话框。该对话框是javax.swing中JOptionPane类的一个实例,查看JDK文档可以知道,它带有4中类型的对话框即ConfirmDialog、InputDialog、MessageDialog和OptionDialog对话框,它们分别可以通过该类的showConfirmDialog、showInputDialog、showMessageDialog和showOptionDialog方法调用出来。它们的功能各有不同,分别时询问一个确切问题、提示要求某些输入、告知用户某事已发生和上述三项的一个大统一。

上面的例子只实现了一个按钮的监听,但是对于一个界面拥有许多个按钮,我们又如何去监听每个按钮呢?下面的三个例子将讲述三种比较常用的监听事件的方法。

ButtonEventDemo1.java程序是采用一个监听器多个if语句来实现监听多个事件。在这种方式下我们要继承ActionListener接口,并且要实现actionPerformed方法。通过getSource()和getActionCommand()方法来获取事件的事件源。

【ButtonEventDemo1.java】

package com.iot.event; import java.awt.event.*; import java.awt.*; import javax.swing.*; publicclass ButtonEventDemo1 implements ActionListener { //只有实现次接口,才会接受事件的通知 JFrame frame = newJFrame(\); JButton button1, button2, button3, button4;//声明4个按钮对象 intb1, b2, b3, b4;//该4个变量分别用来计算4个按钮被点击的次数 public ButtonEventDemo1() { frame.setLayout(new GridLayout(2, 2, 5, 5)); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); button1 = new JButton(\);//实例化按钮对象 frame.add(button1);//将按钮添加到容器上 button1.addActionListener(this);//向按钮注册,告诉接口要监听事件 button2 = newJButton(\); frame.add(button2); button2.addActionListener(this);