我已经在Java中构建了一个小程序来从输入中获取结果。

它可以在控制台中运行,但是现在我希望它具有GUI,因为我正在使用swing JFrames。

这就是我要坚持的地方:我设法显示一个表单,并从我的主代码中创建它。
但是,然后我想使用简单的setter和getter随意操作这种形式。

我已经进行了设置,以更改表单面板的值,但是主代码无法识别该方法。

我对GUI还是很陌生,所以我打赌我只是缺乏使用Swing的正确逻辑,但是如果有人能发现我正在犯的重大错误,这就是我的代码,简而言之我坚持的最低要求:

注意:在这里,为了方便起见,我将主代码直接放入类中,但是我尝试将GUI类与主类分开,结果相同。

public class mainform {

public JPanel panel1;
private JLabel output;

public void setRes()
{
    output.setText("hello");
}


public static void main(String[] args) throws IOException {
    JFrame frame = new JFrame("mainform");
    frame.setContentPane(new mainform().panel1);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);

    frame.setRes(); // HERE IS WHERE "setRes" won't be recognized as a method...

}

}

最佳答案

您声明frame为JFrame类型。而且编译器不在乎赋值的右侧。

对于编译器,frame是一个JFrame。而且JFrames没有该方法。因此,您必须将变量的类型更改为mainform。当然,为了使mainform成为JFrame,您必须使您的类成为框架:

class mainform extends JFrame


此外:请研究Java命名约定。类名总是使用UpperCase,因此“ TestFrame”可能是一个更好的名称。还要避免方法名称的“缩写”。然后“ setRes()”什么也没说。您最好将其称为“ placeTextOnPanel”或类似名称。

10-07 18:55
查看更多