Java 从另一个类中的侦听器访问扩展JPanel
我想从另一个类中的侦听器访问扩展的JPanel,以便在单击按钮时重新调整面板的大小 我试图使用Java 从另一个类中的侦听器访问扩展JPanel,java,swing,Java,Swing,我想从另一个类中的侦听器访问扩展的JPanel,以便在单击按钮时重新调整面板的大小 我试图使用按钮访问它。this.setPreferredSize…,但出现了此错误 范围内无法访问类型按钮的封闭实例 我的纽扣课看起来像这样 public class Buttons extends JPanel { public Buttons() { //code } } 另一个是我想改变面板大小的地方 public class InterfaceCalc extends JPa
按钮访问它。this.setPreferredSize
…,但出现了此错误
范围内无法访问类型按钮的封闭实例
我的纽扣课看起来像这样
public class Buttons extends JPanel {
public Buttons() {
//code
}
}
另一个是我想改变面板大小的地方
public class InterfaceCalc extends JPanel {
// others codes
expandIcon = new ImageIcon("src\\img\\expand.png");
expand = new JButton("", expandIcon);
expand.setBorderPainted(false);
expand.setContentAreaFilled(false);
expand.setFocusPainted(false);
expand.setOpaque(false);
expand.setMargin(new Insets(0, 0, 0, 0));
expand.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (!on) {
Buttons.sqrt.setVisible(true);
Buttons.log.setVisible(true);
Buttons.cos.setVisible(true);
Buttons.sin.setVisible(true);
// this is where is want to access the panel
Buttons.this.setPreferredSize(new Dimension());
on = true;
} else {
Buttons.sqrt.setVisible(false);
Buttons.log.setVisible(false);
Buttons.cos.setVisible(false);
Buttons.sin.setVisible(false);
on = false;
}
}
});
// others codes
}
如何才能做到这一点 我通过在监听器外部创建按钮实例修复了这个问题。以前,扩展面板是这样直接添加的。在InterfaceCalc面板中添加(new Buttons()),现在在创建实例后,我将其添加到面板中,并使用它来更改大小。您希望
按钮是什么。
指向什么?我希望它指向扩展JPanel
,我可以使用按钮从同一个类访问它。这就是我在第二个类中尝试它的原因。像这样按钮setPreferredSize(新维度(500500))
?我这样做了,它得到了这个无法从JComponent类型中静态引用非静态方法setPreferredSize(Dimension)
这个引用封闭类的实例(相对于调用这个的语句)。从您的问题很难判断,但我认为您希望在InterfaceCalc
内部创建一个Buttons
实例,然后在该实例上执行actionPerformed
中的操作。谢谢各位,我通过在侦听器外部创建一个Buttons
实例解决了这个问题。以前,在InterfaceCalc
面板中的this.add(new Buttons())
中直接添加扩展面板,现在在创建实例后,我将其添加到面板中,并使用它更改大小。