我正在尝试将文字附加到JTextArea。我理解如何通过事件监听器添加文本,但我似乎无法理解如何添加文本,例如,如果从main方法调用方法。文本附加到JTextArea就好了,但JTextArea组件没有更新/重新绘制/重新验证/验证(或者你应该说的任何内容: - ))。
GUITest
public class GUITest {
private GUI gui = null;
public GUITest() {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
gui = GUI.getInstance();
gui.createAndShowGUI();
gui.addTxt("Test1");
gui.addTxt("Test2");
gui.addTxt("Test3");
gui.addTxt("Test4");
}
});
}
public static void main(String[] args) {
new GUITest();
}
}
GUI
public class GUI extends JPanel {
private static final long serialVersionUID = 1L;
private ConsolePanel console;
private static GUI instance;
private GUI() {
console = new ConsolePanel();
add(console);
}
public static GUI getInstance() {
if(instance == null) instance = new GUI();
return instance;
}
public void createAndShowGUI() {
// Create window
JFrame f = new JFrame("GUI");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setBackground(Color.decode("#333333"));
f.setResizable(false);
// Create the content pane
JComponent c = new GUI();
c.setOpaque(false);
f.setContentPane(c);
// Draw the window
f.pack();
f.setVisible(true);
}
public void addTxt(String txt) {
console.addTxt(txt);
}
}
ConsolePanel
public class ConsolePanel extends JPanel {
private static final long serialVersionUID = 1L;
private JTextArea console;
public ConsolePanel() {
console = new JTextArea("Init...", 10, 10);
add(console);
}
public void addTxt(String txt) {
console.append(txt);
}
}
如何正确实现addTxt方法,以便在文本组件上添加并显示“Test1”,“Test2”......?
修正:
将行JComponent c = new GUI()
更改为JComponent c = instance
。
答案 0 :(得分:2)
您正在createAndShowGUI方法中创建一个新的TestGUI(或GUI,具体取决于您如何命名),因此您有两个这样的野兽。不要那样做。只创建一个。