来自Netbeans的Matisse代码被阻止。我遇到的问题是,我必须setBackground
从另一个类中的JLabel
到另一个类,但我不能这样做,因为我无法访问JLabel
由于其私有和阻止代码。
对此有任何解决方案吗?
答案 0 :(得分:2)
"来自Netbeans的Matisse代码被阻止"
您可以按照here
进行编辑"因为我的私有和被阻止的代码无法访问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组件
听起来你正在使用多个框架。见The Use of Multiple JFrames, Good/Bad Practice?
<强>更新强>
&#34;我有一个用matisse制作的MAIN框架,但是由于某些原因,我必须在另一个类中设置matisse里面的textField的背景,而在另一个类中进行X验证&#34;
您可以执行的操作是将Main
框架的引用传递给其他类,并在setter
框架中显示Main
。类似的东西(我将提供访问界面)
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);
}
}
答案 1 :(得分:0)