【java面向对象程序设计】
实验三-图形用户界面3 实验时间: 2021/7/4
一. 实验目的
(1)实现宠物信息列表,主人信息列表
(2)实现宠物管理项目的主功能界面功能
实验内容
1.实现查询功能
【需求】:点击确定按钮根据下拉列表所选”主人信息”,将与主人相关的信息,显示在文本域中。
【分析】:
1.在SearchListener类中添加代码,创建泛型集合,并将集合中的信息,显示在文本域中,将监听器与按钮绑定。
【思路】:
1.在SearchListener类中创建ArrayList泛型集合。
2.在创建Master对象,存入集合中。
3.将集合中的内容,显示在文本域中。
二. 源程序及主要算法说明
下面展示一些 内联代码片
。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
public class SearchListener implements ActionListener {
MainView mainView;
public void setMainView(MainView mv){
this.mainView = mv;
}
@Override
public void actionPerformed(ActionEvent e) {
//String select = mainView.cboSelect.getSelectedItem().toString();
//mainView.txtArea.setText(select);
ArrayList<Master> arrayList = new ArrayList<>();
Master m1 = new Master("Tom", 2000);
Master m2 = new Master("Amy", 2000);
arrayList.add(m1);
arrayList.add(m2);
String select = mainView.cboSelect.getSelectedItem().toString();
String str = "";
switch (select) {
case "主人信息":
for (Master m : arrayList) {
str += "主人姓名:" + m.getName() + "金额:" + m.getMoney() + "\n";
}
break;
case "宠物信息":
break;
}
mainView.txtArea.setText(str);
}
}
import javax.swing.*;
public class PetView extends JFrame {
Box baseBox,boxV1,boxV2,boxV3;
JTextField txtUserName;
JPasswordField txtUserPwd;
JButton btnOK,btnCancle;
public LoginListener loginListener; //����ActionEvent�¼��ļ�����
public PetView() {
setLayout(new java.awt.FlowLayout());
init();
setBounds(480,300,310,170);
setTitle("宠物管理系统");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init() {
boxV1=Box.createVerticalBox();
boxV1.add(new JLabel("用户名"));
boxV1.add(Box.createVerticalStrut(8));
boxV1.add(new JLabel("密码"));
txtUserName=new JTextField(10);
boxV2=Box.createVerticalBox();
boxV2.add(txtUserName);
boxV2.add(Box.createVerticalStrut(8));
txtUserPwd=new JPasswordField(10);
boxV2.add(txtUserPwd);
baseBox=Box.createHorizontalBox();
baseBox.add(boxV1);
baseBox.add(Box.createHorizontalStrut(10));
baseBox.add(boxV2);
add(baseBox);
boxV3 = Box.createHorizontalBox();
btnOK = new JButton("登录");
boxV3.add(btnOK);
boxV3.add(Box.createHorizontalStrut(10));
btnCancle = new JButton("取消");
boxV3.add(btnCancle);
add(boxV3);
loginListener = new LoginListener();
loginListener.setView(this); //����ǰ���ڵ����ô��ݸ�������
btnOK.addActionListener(loginListener); //button���¼�Դ,computer�Ǽ�����
}
}
public class Master {
String name;
int money;
public Master(){}
public Master(String name,int money){
setName(name);
setMoney(money);
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setMoney(int money){
this.money = money;
}
public int getMoney(){
return money;
}
}
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;
public class MainView extends JFrame {
JMenuBar menubar;
JMenu petMenu,masterMenu,gameMenu;
JMenuItem petItem1,petItem2,masterItem1,masterItem2,gameItem1,gameItem2;
Box searchBox,showBox,baseBox;
JLabel lblName;
JComboBox<String> cboSelect;
JButton btnOK;
JTextArea txtArea;
SearchListener slistener;
public MainView(){}
public MainView(String s,int x,int y,int w,int h ){
init(s);
setLocation(x,y);
setSize(w,h);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void init(String s) {
setTitle(s);
setLayout(new java.awt.FlowLayout());
menubar = new JMenuBar();
petMenu = new JMenu("宠物信息");
masterMenu = new JMenu("主人信息");
gameMenu = new JMenu("爱护宠物");
petItem1 = new JMenuItem("添加宠物信息",new ImageIcon("n.jpg"));
petItem2 = new JMenuItem("修改宠物信息",new ImageIcon("n.jpg"));
masterItem1 = new JMenuItem("添加主人信息",new ImageIcon("n.jpg"));
masterItem2 =new JMenuItem("修改主人信息");
gameItem1 = new JMenuItem("添加游戏信息",new ImageIcon("n.jpg"));
gameItem2 = new JMenuItem("修改游戏信息");
petMenu.add(petItem1);
petMenu.add(petItem2);
masterMenu.add(masterItem1);
masterMenu.add(masterItem2);
gameMenu.add(gameItem1);
gameMenu.add(gameItem2);
menubar.add(petMenu);
menubar.add(masterMenu);
menubar.add(gameMenu);
setJMenuBar(menubar);
searchBox = Box.createHorizontalBox();
lblName = new JLabel("选择类型");
cboSelect = new JComboBox<String>();
cboSelect.addItem("主人信息");
cboSelect.addItem("宠物信息");
cboSelect.addItem("爱护宠物");
btnOK = new JButton("确定");
searchBox.add(lblName);
searchBox.add(Box.createHorizontalStrut(10));
searchBox.add(cboSelect);
searchBox.add(Box.createHorizontalStrut(10));
searchBox.add(btnOK);
add(searchBox);
showBox = Box.createHorizontalBox();
txtArea = new JTextArea(9,30);
showBox.add(txtArea);
baseBox = Box.createVerticalBox();
baseBox.add(searchBox);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(showBox);
add(baseBox);
slistener = new SearchListener();
slistener.setMainView(this);
btnOK.addActionListener(slistener);
}
}
public class MainPet {
public static void main(String[] args) {
PetView pf = new PetView();
}
}
import java.awt.event.*;
public class LoginListener implements ActionListener {
PetView view;
public void setView(PetView view) {
this.view = view;
}
public void actionPerformed(ActionEvent e) {
try {
String userName = view.txtUserName.getText();
String userPwd = view.txtUserPwd.getText();
if(userName.equals("admin")&&userPwd.equals("123123")) {
System.out.println("登录成功!");
MainView mv = new MainView("宠物管理系统",200,100,800,500);
view.setVisible(false);
}
else {
System.out.println("登录失败!");
}
}
catch(Exception exp) {
}
}
}
三. 主要问题和解决方案
.在SearchListener类中创建ArrayList泛型集合时出现问题,运行显示找不到符号,在文件开头加入import java.util.ArrayList;问题被解决。
四. 测试数据及结果