Как сбросить или обновить Jframe новыми значениями
У меня есть 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");
}
}
1 ответ
Для более точного ответа, отправьте MCVE
Поскольку вы не разместили ни одного кода, я предполагаю, что вы используете JLabel
илиJList
или что-то в этом роде для отображения массива. Независимо от того, что вы делаете, вы должны указать компоненту обновить его содержимое, он не просто делает это сам. Для этого нужно вызвать компоненты.setText()
или похожий метод.
Если у тебя естьJLabel
или жеJTextArea
это может выглядеть так
labelOrTextArea.setText("New Text");
Если вы используетеJList
вы должны обновить спискиDefault List Model
как это
dlm.addElement("New Text");
ОБНОВИТЬ
Я вижу пару вещей не так с вашим кодом. Прежде всего JFrame Frame = new JFrame
условно переменные должны начинаться со строчной буквы и не должны содержать подчеркивания '_'. Вы также используете компоненты AWT вместо компонентов Swing. Вы должны использовать подобные JTextArea
, JPanel
(Нет никаких 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
как это отнимает от основных моментов ООП.