JList没有在JButton上更新

时间:2013-12-06 10:40:43

标签: java swing jbutton jtextfield jlist

我正试图在按下按钮时输入输入JTextField的内容,然后将其存储在一个字符串中,然后我用它来更新我的JList。唯一的问题是,当我按下按钮按下没有任何反应,但我试过的测试文本看起来非常好。有人有主意吗?欢呼声。

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Stack;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JTextField;


public class MainPanel {
    JList list;
    JTextField pushTextEntry;
    Stack lifoStack = new Stack();
    String pushTextListener;
    Boolean b = false;
    String a;

    JComponent mainPanel(final JFrame newFrame) throws IOException {


        ////////////////////////////////////////////////////////////
        final GridBagConstraints gbLayout = new GridBagConstraints();
        final JComponent panel = new JLabel();
        panel.setLayout(new GridBagLayout());

        gbLayout.weightx = 1.0;
        gbLayout.weighty = 1.0;
        gbLayout.gridx = 1;
        gbLayout.gridy = 1;
        gbLayout.anchor = GridBagConstraints.SOUTHEAST;

        gbLayout.insets = new Insets(15,15,215,45); 
        JButton Push = new JButton("Push");
        panel.add(Push, gbLayout);

        pushTextEntry = new JTextField(5);
        gbLayout.insets = new Insets(15,15,215,120);    
        panel.add(pushTextEntry,gbLayout);

        gbLayout.insets = new Insets(15,15,130,45);
        JButton Pop = new JButton("  Pop  ");
        panel.add(Pop, gbLayout);

        gbLayout.insets = new Insets(15,15,40,45);
        JButton Reset = new JButton("Reset");
        panel.add(Reset, gbLayout);
        ////////////////////////////////////////////////////////////

        Push.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                 for (int i = 1; i <= 10; i++)
                    {     
                        pushTextListener = pushTextEntry.getText();

                        lifoStack.add(pushTextListener);
                    }
            }
        });

        String listData[] = {
                "test",
                pushTextListener
        };

        list = new JList(listData);
        gbLayout.insets = new Insets(60,15,160,140);
        panel.add(list,gbLayout);

        return panel;
    }

}

1 个答案:

答案 0 :(得分:2)

您应该使用DefaultListModel来更新数据。 ListModel会在JList更改时通知JListfinal DefaultListModel listModel = new DefaultListModel(); listModel.addElement("test"); list = new JList(listModel); Push.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for (int i = 1; i <= 10; i++) { pushTextListener = pushTextEntry.getText(); listModel.addElement(pushTextListener); } } }); 会自动更新。

{{1}}