0

我无法访问 JFrame 中的多个组件以使用它们的 setText("...") 方法。我的主要是在一个单独的类中,因为实际程序有许多需要同时管理的窗口。

public GameWindow() {

    initialize();
    gameFrame.setVisible(true);
}

private void initialize() {     
    gameFrame = new JFrame();

JTextPane gameTextPane = new JTextPane();       // text pane to contain all game text
    gameTextPanel.add(gameTextPane);

这是我的主要内容:

public class GameMain {
    public static GameWindow gW = new GameWindow();
    //I have tried using the code below with various numbers, but the "setText()" method is never available
    gW.getGameFrame().getContentPane().getComponent(x);
}

我试图从一个单独的类中设置它的文本,但我无法访问这些组件。最终,最终代码应如下所示:

public static void main(String[] args) {

    // make the GUI and initilize
    changeTheText();
}

public static void changeTheText() {
    [CODE TO ACCESS TEXTFIELD].setText("Hello World");
}

我已经尝试了很多不同的方法,我在四处搜索时发现,但我并不真正理解其中的任何一个,而且没有一个仍然允许我访问我需要的方法。

4

2 回答 2

1

在你的类中创建一个setText(String text)方法。GameWindow在该方法中调用setText您需要更改的组件。

于 2013-05-15T12:53:38.473 回答
1

将声明JTextPane移出initialize方法以使其成为参数,以便您可以随时从类中访问它。要使其可以从另一个类访问,您可以将其公开或添加一个 set 方法。像这样:

public class GameWindow {
    private JTextPane gameTextPane;
    ...
    private void initialize(){...}
    ...
    public void setText(String s) {
        gameTextPane.setText(s);
    }
}

要从主类更改文本:

gW.setText("This is a cool text");
于 2013-05-15T13:00:43.990 回答