图形界面2
图形界面
setBounds(300,300,300,300);设置位置和大小
ActionEvent e 事件是由哪个控件发出的,通通都记录在ActionEvent 这个对象中
e.getActionCommand();'返回事件源的名字
e.getSource();返回这个事件的事件源本身对象JButton
setHorizontalAlignment(JTextField.RIGHT); 输入框在右边显示
JScrollPane 右边的滚动条
ActionListener是一个通用的事件,每一个控件都有这么一个事件,但是一些控件有自己独立的触发事件
combol(下拉列表)使用ActionListener的缺陷是,如果当前选中的条目,再次被选中,还会触发事件
itemStateChanged 下拉列表条目改变时,是会触发两次这个方法,一次是原来的条目,新的条目被选泽时,所以一般需要进行判断只有被选择的时候进行操作
this.setTitle("下拉菜单事件");
        //设置位置和大小
        this.setBounds(300, 200, 300, 300);
        combo = new JComboBox<>();
        combo.addItem("本科");
        combo.addItem("专科");
        combo.addItem("高中");
        combo.addItem("初中");
        //ActionListener是一个通用事件,每一个控件都有这么一个事件
        //但是一些特殊的控件,有自己独立的事件方法
        
        //combo使用ActionListener的缺陷是,如果当前选中的条目,再次被选择,还是会触发事件
        /*combo.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //System.out.println(((JComboBox)e.getSource()).getSelectedItem());
                
                System.out.println(combo.getSelectedItem());
            }
        });*/
        
        combo.addItemListener(new ItemListener() {
            //itemStateChanged如果下拉菜单条目改变
            //其实会触发两次这个方法,一次是原来的条目不选择,新的条目被选择
            //所以,一般需要进行判断,只是在被选择的时候进行操作
            public void itemStateChanged(ItemEvent e) {
                //确定状态改变是被选择的状态
                if(e.getStateChange() == ItemEvent.SELECTED) {
                    System.out.println(combo.getItemAt(combo.getSelectedIndex()));
                }
            }
        });
        this.add(combo,BorderLayout.NORTH);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
列表框
JList<E> jlist = new JList<E>();
jlist.setVisibleRowcount(3);设置默认可见长度
jlist.setFixedCellHeight(150);设置每一行的高度
        JPanel panel = new JPanel();
        Student s1 = new Student(1,"张三1",19);
        Student s2 = new Student(2,"张三2",18);
        Student s3 = new Student(3,"张三3",17);
        List<Student> list = new ArrayList<>();
        list.add(s1);list.add(s2);list.add(s3);
        
        JList<Student> jlist = new JList<>();
        //设置默认的可见高度...也就是可见行数,注意,要联合滚动条一起使用
        jlist.setVisibleRowCount(3);
        //设置宽度
        jlist.setFixedCellWidth(150);
        //设置每一行的高度
        jlist.setFixedCellHeight(50);
        //设置单选还是多选
        //jlist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        
        DefaultListModel<Student> model = new DefaultListModel<>();
        model.addElement(s1);
        model.addElement(s2);
        model.addElement(s3);
        model.addElement(s4);
        model.addElement(s5);
        model.addElement(s6);
        //JList没有直接往里面放入集合对象的方法或者构造器,只有一个setModel方法
        //但是这个方法需要的是一个ListModel接口对象
        //DefaultListModel是ListModel的实现类,其实就类似于ArrayList
        jlist.setModel(model);
        
        JScrollPane pane = new JScrollPane(jlist);
        
        JButton btn = new JButton("确定");
        
        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                List<Student> stus = jlist.getSelectedValuesList();