![](/img/trans.png)
[英]How can I access a method with several swing components from another class? (Java)
[英]How can I reference or access objects such as buttons made in another method in Java Swing?
我不知道自己的问题是否使用了正确的术语,如果听起来有点令人困惑,请提前抱歉。 所以基本上我想写一个Java Swing程序来创建GUI。 在整个GUI中,有多个组件/对象或多或少是统一的,因此我制定了单独的方法来创建不同的对象和面板,并将它们组合到master
面板中,然后再传递回frame
。
我对整个GUI的布局和外观进行了布局,但还算不上功能。 我的问题是我有动作侦听器,它们需要引用或访问在另一个方法/类中添加到面板中并作为面板传递回的按钮或对象。 例如,
class makeComponents extends JPanel {
public makeComponents() {
}
public JToggleButton ToggleButton() {
// Creates On/Off buttons as switches
JToggleButton button = new JToggleButton("OFF", false);
button.addActionListener(new ActionListener() {
AbstractButton abstractButton = (AbstractButton)e.getSource();
if (abstractButton.isSelected()) {
abstractButton.setText("ON");
// Want to add CardLayout card.show() to switch pictures
}
else {
abstractButton.setText("OFF");
// Want to add CardLayout card.show() to switch pictures
}
}
return button;
}
}
我在单独的left
JPanel上有一个像上面一样的开/关按钮,然后在right
JPanel的CardLayout中有2个图像,并且这2个面板在master
JPanel中连接在一起,并传递回框架。 我创建了太多的图层,我不知道如何回溯和访问这些图片,因此我可以在另一个面板中翻转2张图像的CardLayout。
我希望我足够清楚,任何帮助将不胜感激。 先感谢您!
您可以简单地将所有类合并到一个内部具有私有类的类中,然后可以像这样控制clas对象:
public class Master {
int x;
int y;
Inside1 inside;
Inside2 in2;
private class Inside1{
public Inside1(){
foo();
}
private void foo(){
x=5; //Master.x <---
}
}
private class Inside2{
public Inside2(){
inside = new Inside1(); //<- new object of inside1 form Master
bar();
}
private void bar(){
y=15; //Master.y
}
}
public Master(){
in2 = new Inside2();
}
}
如您所见,我可以访问私有类内部的大师类的所有私有字段。 您可以重写您的类,并将其放入JFrame类中,问题已解决!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.