0

来自 Netbeans 的 Matisse 代码被阻止。setBackground我遇到的问题是我必须JLabel从另一个包中的另一个类,但我不能这样做,因为JLabel由于它的私有和被阻止的代码,我无法访问它。

有什么解决办法吗?

4

2 回答 2

2

“来自 Netbeans 的马蒂斯代码被阻止”

您可以编辑它,如此处所示

“因为我无法访问 JLabel,因为它的私有和被阻止的代码”

只需为其他类中的标签编写一个getter方法

public class OtherClass .. {
    private JLabel jLabel1;

    public JLabel getLabel() {
        return jLabel1;
    }
}

import otherpackage.OtherClass;

public class MainFrame extends JFrame {
    private OtherClass otherClass;
    ...
    private void jButtonActionPerformed(ActionEvent e) {
         JLabel label = otherClass.getLabel();
         label.setBackground(...)
    }
}

“从另一个类访问 jframe 组件”

听起来您正在使用多个帧。请参阅使用多个 JFrame,好/坏做法?


更新

“我有一个用 matisse 制作的主框架,但由于某些原因,当另一个类中发生 X 验证时,我必须从另一个类中设置 matisse 内的 textField 的背景”

然后你可以做的是将Main框架的引用传递给另一个类,并setterMain框架中有一个。类似的东西(我将提供一个访问接口)

public interface Gettable {
    public void setLabelBackground(Color color);
}

public class Main extends JFrame implements Gettable {
    private JLabel jLabel1;
    private OtherPanel otherPanel;

    public void initComponents() {
        otherPanel = new OtherPanel(Main.this); // see link above to edit this area
    }

    @Override
    public void setLabelBackground(Color color) {
        jLabel1.setBackground(color);
    }
}

public class OtherPanel extends JPanel {
    private Gettable gettable;

    public OtherPanel(Gettable gettable) {
        this.gettable = gettable;
    }

    private void jButtonActionPerformed(ActionEvent e) {
        gettable.setLabelBackground(Color.RED);
    }
}
于 2014-04-11T08:00:59.680 回答
0
  • 使用 JLabel 为类创建一个侦听器,并使用更改标签背景的方法
  • 在使用 JLabel 的类中实现
  • 将其他类的侦听器(您要从中更改 BG)设置为具有 JLabel 的类的侦听器
  • 在您想要的任何功能之后更改背景。
于 2014-04-11T07:53:28.657 回答