如何在我的TextArea中显示在控制台中显示的文本?

时间:2019-06-04 08:29:01

标签: java class jframe jtextarea settext

作为第二个学期项目的一部分,我们必须用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);

目前,我们没有任何结果或错误消息,因为我们没有任何想法。

2 个答案:

答案 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);
        }
    });
}