有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何更新JList?

我想从这个程序中得到的是,当按下第一个按钮时,它将显示分配的数组,当按下第二个按钮时,它将清除列表并显示分配的数组,我一直在网上查找解决方案,许多人建议使用列表模型,任何提示都非常感谢


import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class tester extends JFrame{
private JList list = new JList();
private JButton b1 = new JButton("Array1");
private JButton b2 = new JButton("Array2");

public tester(){
    final String [] Array1 = {"1", "2", "3", "4"};
    final String [] Array2 = {"one", "two", "three", "four"};

    JPanel p1 = new JPanel();
    p1.add(new JScrollPane(list));
    p1.add(b1);
    p1.add(b2);
    add(p1, BorderLayout.CENTER);

    b1.addActionListener(new ActionListener (){
        public void actionPerformed(ActionEvent e){
            DefaultListModel Model1 = (DefaultListModel)list.getModel();
            for(int i = 0; i < Array1.length; i++){
                Model1.addElement(Array1[i]);
            }
        }
    });

    b2.addActionListener(new ActionListener (){
        public void actionPerformed(ActionEvent e){
            DefaultListModel Model2 = (DefaultListModel)list.getModel();
            for(int i = 0; i < Array2.length; i++){
                Model2.addElement(Array2[i]);
            }
        }
    });

}

public static void main (String [] args){
    tester t1= new tester();
    t1.pack();
    t1.setLocationRelativeTo(null);
    t1.setTitle("Test");
    t1.setVisible(true);
    t1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
}

共 (2) 个答案

  1. # 1 楼答案

    试试这个:

    b1.addActionListener(new ActionListener (){
        @Override
        public void actionPerformed(ActionEvent e){
            DefaultListModel Model1 = new DefaultListModel();
            for(int i = 0; i < Array1.length; i++){
                Model1.addElement(Array1[i]);
            }
            list.setModel(Model1);
        }
    });
    
    b2.addActionListener(new ActionListener (){
        @Override
        public void actionPerformed(ActionEvent e){
            DefaultListModel Model2 = new DefaultListModel();
            for (String Array21 : Array2) {
                Model2.addElement(Array21);
            }
            list.setModel(Model2);
        }
    });
    
  2. # 2 楼答案

    here is a sample for you

    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.GridLayout;
    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.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    
    public class Main {
        private static int i = 1;
    
        public static void main(String args[]) {
            JFrame frame = new JFrame("Demo Frame/SuRu");
            Container contentPane = frame.getContentPane();
            Container contentPane2 = new JPanel(new GridLayout(3, 1));
            contentPane.setLayout(new BorderLayout());
    
            final DefaultListModel model = new DefaultListModel();
            final JList jList = new JList(model);
            JButton addButton = new JButton("Add Element");
            JButton removeButton = new JButton("Remove Element");
            JButton removeAllButton = new JButton("Remove All");
    
            contentPane2.add(addButton);
            contentPane2.add(removeButton);
            contentPane2.add(removeAllButton);
            contentPane.add(new JScrollPane(jList), BorderLayout.CENTER);
            contentPane.add(contentPane2, BorderLayout.EAST);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(100, 100, 500, 350);
            frame.setVisible(true);
    
            addButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    model.addElement("Element " + i);
                    i++;
                }
            });
            removeButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    if (jList.getSelectedIndex() != -1) {
                        model.remove(jList.getSelectedIndex());
                    }
                }
            });
            removeAllButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    model.removeAllElements();
                }
            });
    
        }
    }