gpt4 book ai didi

java - 无法从我的 main 调用 JFrame 方法

转载 作者:行者123 更新时间:2023-11-29 08:41:15 25 4
gpt4 key购买 nike

我用 java 构建了一个小程序来从输入中获取结果。

它在控制台中工作,但现在我希望它有一个 GUI,因为我正在使用 swing JFrames。

这就是我被困的地方:我设法显示一个表单,从我的主代码创建它。但是后来我想使用简单的 setter 和 getter 随意操作这个表单。

我已经制作了一个 setter 来更改我的表单面板的值,但主要代码无法识别该方法。

我是 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 类型。并且编译器不关心赋值的右侧。

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

class mainform extends JFrame

此外:请学习java命名约定。类名总是大写,所以“TestFrame”在这里可能是一个更好的名字。还要避免方法名称的“缩写”。然后“setRes()”什么也没说;您最好将其称为“placeTextOnPanel”或类似名称。

关于java - 无法从我的 main 调用 JFrame 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40133738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com