如何使用新值重置或刷新 Jframe

How to reset or refresh Jframe with new values

我有一个 Jframe,用户可以通过 Joptionpane 输入新信息,它被添加到一个数组,然后附加并显示到内容窗格。然后循环重复,直到用户输入 "STOP"。目前程序正在旧数组下输出新数组。如何清除内容窗格中的旧数组并仅显示新值?

import java.awt.*;
import java.util.LinkedList;
import java.util.List;
public class Project1GUI {
    static JFrame Frame;
    static TextArea unsorted_words, sorted_words, linked_words;
    public Project1GUI(String title){
            //All this does is make an empty GUI FRAME. 
                    Frame=new JFrame();//i made a new variable from the JFrame class
                    Frame.setSize(400,400);//Used the Variable from JFrame and used some of it functions. This function sets the hieght and width of the Frame
                    Frame.setLocation(200,200);//This sets where the Empty Frame should be
                    Frame.setTitle(title);//This puts a title up top of the Frame
                    Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//places an x box that closes when clicked on
                    Frame.setVisible(true);//This activates the JFram when is set true.
                    Frame.setLayout(new GridLayout(1,2));//This sets the layout of the Frame and since i want a Grid i used a GirdLayout
                    //Functions and placed it inside the setlayout functions. to  get 2 grids i places 1 meaning 1 row and 2 for 2 cols
                    unsorted_words=new TextArea(); //From the TextArea class i made three variables
                    sorted_words= new TextArea();
                    linked_words= new TextArea();
                    Container panel=new Container();
                    panel=Frame.getContentPane();
                    panel.add(unsorted_words);
                    panel.add(sorted_words);
                    panel.add(linked_words);

    }


    public void add_unsorted(String words){
        unsorted_words.append(words+"\n");//add words to GUI

    }

    public void add_sorted(String words){
        sorted_words.append(words+"\n");
    }

    public void add_linked(List<String> linked_words2){
        linked_words.append(linked_words2+"\n");
    }

}

要获得更明确的答案,post 和 MCVE

鉴于您没有 post 编辑任何代码,我猜您正在使用 JLabelJList 或类似的东西来显示数组。无论你在做什么,你都需要告诉组件更新它的内容,它不只是自己做。为此,您需要调用组件 .setText() 或类似方法。

如果你有 JLabelJTextArea 它可能看起来像这样。

labelOrTextArea.setText("New Text");

如果您使用 JList,您应该像这样更新列表 Default List Model

dlm.addElement("New Text");

更新

我发现您的代码有一些问题。首先 JFrame Frame = new JFrame 按照惯例,变量应以小写字母开头,并且不应包含下划线“_”。您还使用 AWT 组件而不是 Swing 组件。您应该使用 JTextAreaJPanel(没有 JContainer)、JLabel

您也永远不会将面板添加到框架中。

frame.add(panel);

在将其可见性设置为 true 后,您也不应向框架或面板添加内容。所以你应该像这样设置你的框架

import javax.swing.*;
import java.awt.*;
import java.util.List;
public class Project1GUI
{
    JTextArea unsorted_words, sorted_words, linked_words;

    public Project1GUI()
    {
        JFrame frame = new JFrame("Title");
        JPanel panel = new JPanel(new GridLayout(2, 1));

        unsorted_words = new JTextArea();
        sorted_words = new JTextArea();
        linked_words = new JTextArea();

        panel.add(unsorted_words);
        panel.add(sorted_words);
        panel.add(linked_words);

        frame.add(panel);
        frame.setSize(400,400);
        frame.setLocation(200,200);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

然后您可以实现您当前拥有的方法并在 ActionListener 等中调用它们。

结果:

最重要的是,您不应该依赖 static 的使用,因为它脱离了 OOP 的要点。