向 JTextArea 添加文本
Add text to JTextArea
我正在尝试将文本附加到 JTextArea。我了解如何通过事件侦听器添加文本,但我似乎无法理解如果从主方法调用方法的话如何添加文本。文本附加到 JTextArea 就好了,但 JTextArea 组件不是 updated/repainted/revalidated/validated(或者您应该说的任何内容 :-))。
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();
}
}
图形界面
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);
}
}
控制台面板
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
。
您正在 createAndShowGUI 方法中创建一个新的 TestGUI(或 GUI,具体取决于您如何命名它),因此您有两个这样的野兽。不要那样做。只创建一个。
我正在尝试将文本附加到 JTextArea。我了解如何通过事件侦听器添加文本,但我似乎无法理解如果从主方法调用方法的话如何添加文本。文本附加到 JTextArea 就好了,但 JTextArea 组件不是 updated/repainted/revalidated/validated(或者您应该说的任何内容 :-))。
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();
}
}
图形界面
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);
}
}
控制台面板
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
。
您正在 createAndShowGUI 方法中创建一个新的 TestGUI(或 GUI,具体取决于您如何命名它),因此您有两个这样的野兽。不要那样做。只创建一个。