遇到一道题目不知道如何解决
编写一个Java程序,在程序中建立一个窗口,能够让用户输入学生的一般信息,并且能对其进行添加和删除操作。
增加功能:点击“增加”按钮后,将输入的学生信息增加在右边的列表框(List)中.
删除功能:在列表框中选中要删除的学生所在行,点击“删除”按钮,删除该行信息.
如图:
初学者,实在不知道如何解决。
[解决办法]
http://book.douban.com/subject/1189850/
你的问题很接近这本书里的那个实例,可以参考学习。
[解决办法]
右面 放一个 JList。
DefaultListModel model = new DefaultListModel();JList list = new JList(model);
[解决办法]
import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Vector;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.JSplitPane;import javax.swing.JTextField;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;public class MainFrame extends JFrame implements ActionListener,ListSelectionListener { private JTextField name; private JTextField age; private JTextField tel; private JRadioButton man; private JRadioButton women; private JButton add; private JButton del; private JList list; private Vector<Student> students; public MainFrame() { //创建输入信息的部分开始 name = new JTextField(20); age = new JTextField(20); tel = new JTextField(20); man = new JRadioButton("男"); man.setSelected(true); women = new JRadioButton("女"); JPanel input = new JPanel(); input.setLayout(new FlowLayout()); input.setSize(50, 150); JPanel p1 = new JPanel(); p1.add(new JLabel("姓名:")); p1.add(name); input.add(p1); JPanel p2 = new JPanel(); p2.add(new JLabel("年龄:")); p2.add(age); input.add(p2); JPanel p3 = new JPanel(); p3.add(new JLabel("电话:")); p3.add(tel); input.add(p3); JPanel p4 = new JPanel(); p4.add(new JLabel("性别:")); p4.add(man); p4.add(women); input.add(p4); //加入到ButtonGroup中。这样的话同时只能选中一个。 ButtonGroup bg = new ButtonGroup(); bg.add(man); bg.add(women); //创建输入信息的部分结束 //创建按钮部分开始 add = new JButton("增加"); add.addActionListener(this); del = new JButton("删除"); del.addActionListener(this); JPanel buttons = new JPanel(); buttons.add(add); buttons.add(del); this.add(buttons,BorderLayout.NORTH); //创建按钮部分结束 //创建JList部分开始 students = new Vector<Student>(); Student stu = new Student(); stu.setName("liuming"); //students.add(stu); list = new JList(students); list.addListSelectionListener(this); //创建JList部分开始 JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); jsp.setDividerLocation(350); jsp.setDividerSize(3); jsp.setLeftComponent(input); jsp.setRightComponent(list); this.add(jsp); this.setTitle("简单学生信息管理"); this.setSize(500,400); this.setResizable(false); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } //处理按钮事件 public void actionPerformed(ActionEvent e) { if(e.getSource() == add) { if(check()) return; Student student = new Student(); student.setName(name.getText()); student.setAge(Integer.parseInt(age.getText())); if(man.isSelected()) { student.setSex("男"); } else if(women.isSelected()) { student.setSex("女"); } student.setTel(tel.getText()); students.add(student); list.setListData(students); list.repaint(); JOptionPane.showMessageDialog(this, "添加学生信息成功!"); } else if(e.getSource() == del) { int index = list.getSelectedIndex(); if(index >= 0) { Student stu = students.remove(index); list.setListData(students); list.repaint(); JOptionPane.showMessageDialog(this, "删除学生" + stu.getName() + "的信息成功!"); } else { JOptionPane.showMessageDialog(this, "没有选中学生!"); } } } //判断是否输入有空值,年龄是否是数字 private boolean check() { boolean flag = false; if(name.getText().equals("")) { flag = true; JOptionPane.showMessageDialog(this, "姓名不能为空!"); } else if(age.getText().equals("")) { flag = true; JOptionPane.showMessageDialog(this, "年龄不能为空!"); } else if(tel.getText().equals("")) { flag = true; JOptionPane.showMessageDialog(this, "电话不能为空!"); } else if(!age.getText().matches("(\\d)++")) { flag = true; JOptionPane.showMessageDialog(this, "年龄必须为的数字!"); } return flag; } //处理JList的值改变的事件 public void valueChanged(ListSelectionEvent e) { int index = list.getSelectedIndex(); Student stu = students.get(index); String info = "姓名:" + stu.getName() + "\n年龄:" + stu.getAge() + "\n性别:" + stu.getSex() + "\n电话:" + stu.getTel(); JOptionPane.showMessageDialog(this, info); } public static void main(String[] args) { new MainFrame(); }}