Java第七次作业--图形用户界面
(一)学习总结
1 . 写出事件处理模型中的几个关键词,并通过具体代码实例说明你对事件处理模型的理解。
事件源:
(1)事件源是一个产生(或触发)事件的对象。当这个事件源对象的某些状态以某种方式发生变化时,就会产生某种类型的事件(一个事件源可能会生成多个不同类型的事件)。如果某个组件(对象)希望得到事件源产生的事件,就需要在这个事件源上注册。
事件:
(2)事件就是承载事件源状态改变时的信息对象。java.awt.event包和javax.swing.event包中定义了各种事件类,类名以Event结尾。
事件监听器接口:
(3)API对于每种事件都定义了对应的接口,接口中定义了处理该事件的方法,这些接口称为事件监听器接口。监听器接口以Listener结尾。如ActionListener接口处理ActionEvent事件。事件源产生一个事件,可以传送给事件监听者处理。事件监听者实际上就是一个类,该类实现了某个事件监听器接口,对接受到的事件进行处理。
//添加监听器
private void addListener() {
//添加按钮监听
addBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
addPet(); //调用添加方法
}
});
//修改按钮监听
updateBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
updatePet(); //调用修改方法
}
});
//删除按钮监听
delBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
delPet(); //调用删除方法
}
});
}
添加监听器:
public AdminDialog(Frame owner,boolean modal){
super(owner,modal);
this.init(); //初始化
this.addComponent(); //添加组件
this.addListener(); //添加监听器
queryPet(); //创建对象时显示数据
}
2.JTextArea与TextArea自动换行和滚动条的对比
1.自动换行
-
JTextArea自动换行代码:
JTextArea jtextArea = new JTextArea(); // 新建jtextArea jtextArea.setLineWrap(true); //实现自动换行
-
TextArea,在创建文本区时直接设置:
TextArea.SCROLLBARS_VERTICAL_ONLY,意为仅垂直方向设置,达到了自动换行的效果;
如果通过TextArea的其他构造方法,创建出来的文本区是含垂直和水平两个方向的滚动条,不支持自动换行
TextArea textArea = new TextArea("", 20, 43, TextArea.SCROLLBARS_VERTICAL_ONLY); // 创建文本区
2.滚动条:
-
JTextArea添加滚动条(JScrollPane)代码:
JScrollPane scrollPane = new JScrollPane(textArea); //创建滚动条,需要指定添加位置 scrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); //设置滚动条的形式
-
TextArea 默认自带滚动条(默认为SCROLLBARS_BOTH),如果不用滚动条,把 TextArea.SCROLLBARS_VERTICAL_ONLY 改为 SCROLLBARS_NONE
(二)实验总结
程序设计思路:使用GUI,编写一个宠物商店管理系统实现对宠物信息的统一管理。假设宠物种类有猫、狗,宠物信息包括:编号、品种、年龄、数量、价格。系统启动进入登录界面,登录成功进入管理界面,否则提出错误信息后退出系统。
在管理界面实现以下功能:
(1)显示所有宠物列表
(2)添加宠物到列表
(3)删除宠物
(4)对宠物信息进行修改
(5)退出
问题:对界面信息的添加不清楚
private JLabel tableLabel = new JLabel("宠物列表");
private JScrollPane tablePane = new JScrollPane();
private JTable table = new JTable();
private JLabel numberLabel = new JLabel("宠物编号");
private JLabel nameLabel = new JLabel("宠物种类");
private JLabel priceLabel = new JLabel("宠物价格");
private JLabel ageLabel = new JLabel("宠物年龄");
private JLabel unitLabel = new JLabel("宠物数量");
private JTextField addNumberText = new JTextField(6);
private JTextField addNameText = new JTextField(6);
private JTextField addPriceText = new JTextField(6);
private JTextField addAgeText = new JTextField(6);
private JTextField addUnitText = new JTextField(6);
private JButton addBtn = new JButton("添加宠物");
private JTextField updateNumberText = new JTextField(6);
private JTextField updateNameText = new JTextField(6);
private JTextField updatePriceText = new JTextField(6);
private JTextField updateAgeText = new JTextField(6);
private JTextField updateUnitText = new JTextField(6);
private JButton updateBtn = new JButton("修改宠物");
private JTextField delNumberText = new JTextField(6);
private JButton delBtn = new JButton("删除宠物");
private AdminService adminService = new AdminService(); // 定义服务类对象,提供完整功能服务
private JButton fhBtn = new JButton("返回");
解决方法:经过反复添加与修改,才做好。
(三)代码托管
地址链接: