实验四 图形用户界面编程 实验报告
更新时间:2023-12-17 23:11:01 阅读量: 教育文库 文档下载
- 实验四小推荐度:
- 相关推荐
实验四 图形用户界面编程 实验报告
一、实验目的
1. 掌握常用组件的定义及使用 2. 理解常见的布局方式及其特点 3. 掌握事件处理机制
二、实验原理
1. 常用控件:
① JTextField:用于接受文本输入,表现为图形界面中文本框。 ② JLabel:标签控件,表现为图形界面中的文字控件。 ③ JSplitPane:一个用于把面板分成两个大小可以调整的面板的控件。 ④ JScrollPane:一个提供滚动支持的面板,当内容超出面板大小时,会自动下按时
滚动条。 ⑤ JPanel:普通的面板。可以通过布局管理器来控制面板中控件的布局。 ⑥ JButton:按钮控件。 ⑦ JPasswordField:用于接受密码的输入,表现为图形界面的密码输入框。 ⑧ JList:列表框控件。
2. 每次单击按钮控件时,可以通过addActionListener方法对按钮注册监听,从而实现单击事件的监听。
三、实验内容
通过编写一个程序实现上面的界面
四、实验过程
1. 界面的分析,实验要求中的界面主要分成上下的两部分,界面的下面部分用于显示在上面文本框输入的用户名和密码,而上部分又分成了输入姓名和密码的区域。而且根据实验的要求,需要把输入的用户名和密码添加到列表框之中,这需要一个按钮。根据分析,可以得到整个界面控件的关系如下:
1
2. 代码的编写:
首先,如果要创建一个窗口,则需要编写一个JFrame的子类。
public class MainFrame extends JFrame { }
然后,在类之中声明需要用的控件(需要用的控件在上述已经全部列出)
private JSplitPane mainSplitPane = null; private JSplitPane inputSplitPane = null; private JSplitPane topSplitPane = null; private JScrollPane listBoxPane = null; private JPanel buttonPanel = null; private JPanel usernamePanel = null; private JPanel passwordPanel = null; private JButton okButton = null; private JTextField username = null; private JPasswordField password = null; private JList listBox = null;
private JLabel usernameLabel = null; private JLabel passwordLabel = null;
再然后,编写类的构造方法,对控件进行初始化以及进行相应的布局,同时对JFrame的一些属性进行调整 。
public MainFrame() {
this.username = new JTextField(10); this.password = new JPasswordField(10); this.usernameLabel = new JLabel(\输入姓名:\this.passwordLabel = new JLabel(\输入密码:\this.okButton = new JButton(\确定\
this.listBox = new JList(new DefaultListModel()); this.usernamePanel = new JPanel(
new FlowLayout(FlowLayout.CENTER)); this.usernamePanel.add(this.usernameLabel); this.usernamePanel.add(this.username); this.passwordPanel = new JPanel(
new FlowLayout(FlowLayout.CENTER)); this.passwordPanel.add(this.passwordLabel); this.passwordPanel.add(this.password); this.listBoxPane = new JScrollPane(listBox); this.buttonPanel = new JPanel(new FlowLayout()); this.buttonPanel.add(okButton); this.inputSplitPane =
new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
this.usernamePanel, this.passwordPanel);
this.topSplitPane =
new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
inputSplitPane, buttonPanel);
2
this.mainSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
this.topSplitPane, this.listBoxPane);
this.setLayout(new BorderLayout());
this.add(this.mainSplitPane, BorderLayout.CENTER); this.setTitle(\测试\
this.setLocationByPlatform(true); this.setSize(500, 300);
this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(true); }
最后对按钮注册监听器。这里采用了一个实现ActionListener的内部类的方法。代码如下:
private final class ClickEvent implements ActionListener { }
@Override
public void actionPerformed(ActionEvent e) { }
// 分别获得输入用户名和输入密码的文本框中的字符
String username = MainFrame.this.username.getText(); String password =
new String(MainFrame.this.password.getPassword()); // 把用户名和密码组成成一个字符串并添加到列表框中 String newLine =
String.format(\姓名:%s;密码:%s\DefaultListModel model =
(DefaultListModel) MainFrame.this.listBox.getModel(); model.addElement(newLine);
运行结果如下:
3
五、完整代码
import java.awt.BorderLayout; import java.awt.FlowLayout;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel;
import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextField;
public class MainFrame extends JFrame {
private final class ClickEvent implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// 分别获得输入用户名和输入密码的文本框中的字符
String username = MainFrame.this.username.getText(); String password =
new String(MainFrame.this.password.getPassword()); // 把用户名和密码组成成一个字符串并添加到列表框中 String newLine =
String.format(\姓名:%s;密码:%s\DefaultListModel model =
(DefaultListModel) MainFrame.this.listBox.getModel();
4
private JSplitPane mainSplitPane = null; private JSplitPane inputSplitPane = null; private JSplitPane topSplitPane = null; private JScrollPane listBoxPane = null; private JPanel buttonPanel = null; private JPanel usernamePanel = null; private JPanel passwordPanel = null; private JButton okButton = null; private JTextField username = null; private JPasswordField password = null; private JList listBox = null;
private JLabel usernameLabel = null; private JLabel passwordLabel = null;
}
}
}
model.addElement(newLine);
public MainFrame() { }
public static void main(String[] args) { }
MainFrame frm = new MainFrame(); this.username = new JTextField(10); this.password = new JPasswordField(10); this.usernameLabel = new JLabel(\输入姓名:\this.passwordLabel = new JLabel(\输入密码:\this.okButton = new JButton(\确定\
this.listBox = new JList(new DefaultListModel()); this.okButton.addActionListener(new ClickEvent()); this.usernamePanel =
new JPanel(new FlowLayout(FlowLayout.CENTER)); this.usernamePanel.add(this.usernameLabel); this.usernamePanel.add(this.username); this.passwordPanel =
new JPanel(new FlowLayout(FlowLayout.CENTER)); this.passwordPanel.add(this.passwordLabel); this.passwordPanel.add(this.password); this.listBoxPane = new JScrollPane(listBox); this.buttonPanel = new JPanel(new FlowLayout()); this.buttonPanel.add(okButton); this.inputSplitPane =
new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
this.usernamePanel, this.passwordPanel); new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
inputSplitPane, buttonPanel);
new JSplitPane(JSplitPane.VERTICAL_SPLIT,
this.topSplitPane, this.listBoxPane); this.setLayout(new BorderLayout());
this.add(this.mainSplitPane, BorderLayout.CENTER); this.setTitle(\测试\
this.setLocationByPlatform(true); this.setSize(500, 300);
this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(true); this.mainSplitPane = this.topSplitPane =
5
正在阅读:
实验四 图形用户界面编程 实验报告12-17
一棵枯树的倾诉作文02-04
芦溪县电瓷产业情况06-06
最新人教版初二(八年级)数学上册各单元及期末测试题(含答案)05-16
汽车货运站级别划分和建设要求09-09
2016春季开学典礼工作汇报03-08
青春思念写在海角上心情日记10-29
1953年1月1日我国开始执行发展国民经济的第一个五年计划08-01
专业技术人员个人工作总结(三篇)04-30
虞世南——《蝉》08-01
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实验
- 用户界面
- 图形
- 编程
- 报告