簡體   English   中英

按JButton時JList不更新

[英]JList not updating on JButton press

我試圖在按鈕按下時獲取輸入到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;
    }

}

您應該使用DefaultListModel更新數據。 ListModel更改時, ListModel將通知JList ,並且JList將自動更新。

final 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);
        }
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM