繁体   English   中英

从另一个类的侦听器访问扩展的JPanel

[英]Access an extended JPanel from a listener in another class

我想从另一个类的侦听器访问扩展的JPanel,以便在单击按钮时重新调整该面板的大小。

我尝试使用Buttons.this.setPreferredSize ....访问它,但出现此错误

在作用域中无法访问Button类型的封闭实例

我的Buttons类看起来像这样

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 
}

如何实现呢?

我通过在侦听器外部创建Button的实例来解决此问题。 之前,扩展面板是像这样直接添加到InterfaceCalc面板的this.add(new Buttons())中的,现在在创建实例之后,我将其添加到面板中并使用它来更改大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM