作为第二个学期项目的一部分,我们必须用Java创建一个逃生游戏。
我们设法在控制台中显示了文本,但是,我们无法在窗口(位于另一个类中)中显示相同的文本。 我们知道我们必须使用setText(),因为它是TextArea,但是我们不知道该怎么做。
private JTextArea texte;
private JButton button;
private JProgressBar bar;
public IHM() {
this.window = new JFrame("Esc'App Game");
this.window.setContentPane(this.panelCreation());
this.window.pack();
this.window.setVisible(true);
}
public JPanel panelCreation() {
JPanel panel = new JPanel();
this.texte = new JTextArea("Erreur affichage de texte");
texte.setText(""); // <- here
panel.add(texte);
texte.getText();
this.window.add(panel);
return panel;
}
我们的主要对象:
// Ask for the pseudo
Player p1 = new Player();
System.out.println(p1.getPseudo());
// change System.out to setText() ?
// Ask for the theme
Player.getTheme();
// Creation of a new Theme
Theme t1 = new Theme(Player.myTheme);
目前,我们没有任何结果或错误消息,因为我们没有任何想法。
答案 0 :(得分:0)
您可以开始阅读Swing text components上的Oracle官方教程。
例如,您会发现JTextArea
具有方法setText()
和getText()
。为了准备做一些真正有用的事情,您可能想研究如何对组件使用models。
答案 1 :(得分:0)
您可以执行以下操作:
public void println(String s) {
try {
int end = text.getDocument().getLength();
text.getDocument().insertString(end, s + "\n", null);
} catch (BadLocationException ex) {
Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, null, ex);
}
}
更新
public void println(String s) {
SwingUtilities.invokeLater(()-> {
try {
int end = text.getDocument().getLength();
text.getDocument().insertString(end, s + "\n", null);
} catch (BadLocationException ex) {
Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, null, ex);
}
});
}