如何解决将变量从 JFrame 传递给 JPanel?
现在我花了大约一个小时在网上搜索解决方案,我看到的解决方案对我来说似乎太复杂了,或者根本没有解决方案。我是一名学生,所以我对编码还很陌生,所以请原谅我缺乏这方面的知识。但是这个问题困扰我的时间比我认为应该的要长。
搜索后,我决定在 JFrame 中放置一个方法,该方法只返回所述变量。
然后在 JPanel 中,我将调用此方法并将其分配给一个变量。然后使用该变量绘制椭圆。然而,这不起作用或更多,所以我认为它没有收到价值,因为 eclipse 没有显示任何问题。我尝试将 getter 方法调用放在“x”所在的位置,但什么也没有。但是当在像“50”这样的地方放置常量时,它会打印一个圆圈。
我这样做对吗??如何将值从 Jframe 传递到 Jpanel?
代码:
public class circ {
public static void main(String[] args)
{
circMain cM = new circMain();
cM.setSize(600,600);
cM.setVisible(true);
}
}
jframe:
public class circMain extends JFrame {
private circRan circRan;
private calcBox calcBox;
double x = Math.random()*100;
double y = Math.random()*100;
int xfinal = (int)x;
int yfinal = (int)y;
public circMain() {
super("Random Circle");
setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
circRan = new circRan();
calcBox = new calcBox();
pack();
setVisible(true);
add(circRan,BorderLayout.norTH);
add(calcBox,BorderLayout.soUTH);
}
public int getX() {
return xfinal;
}
public int getY() {
return yfinal;
}
}
jpanel:
public class circRan extends JPanel {
int x = getX();
public void paint(Graphics g)
{
super.paint(g);
g.drawoval(50,50,x,x);
setSize(300,300);
}
}
编辑第 2 天-get 方法(在 circMain 中):
public int getX() {
return xfinal;
}
然后我把它放在 circRan:
int x = getX();
仍然没有..今天结束时,我们将完成任务分配,感觉解决方案很简单,我通常会遗漏一些......而且它会加重。
解决方法
线
int x = getX();
相当于
int x = this.getX();
即您的类变量 circRan.x
将获得调用为类 getX()
声明的函数 circRan
的返回值,该函数是为 JComponent
声明的,JPanel
的超类。
您想要实现的是调用为 circMain
实例声明的函数(顺便说一下,它覆盖了由 getX()
的超类 JFrame
声明的 Component
)。为此,您需要 circMain
的实例以获得此值。
或者,如果 circMain
的所有实例都共享此值(或者如果仅存在一个实例),您可以声明 x
、xfinal
和 getX()
{{1} }.然后你可以调用static
,直接在类而不是实例上调用静态函数。不过,这取决于您的用例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。