Netbeans からの Matisse コードはブロックされています。私が抱えている問題はsetBackground
、JLabel
別のパッケージの別のクラスからアクセスする必要があるJLabel
ことですが、プライベートでブロックされたコードのためにアクセスできないため、これを行うことができません。
これに対する解決策はありますか?
Netbeans からの Matisse コードはブロックされています。私が抱えている問題はsetBackground
、JLabel
別のパッケージの別のクラスからアクセスする必要があるJLabel
ことですが、プライベートでブロックされたコードのためにアクセスできないため、これを行うことができません。
これに対する解決策はありますか?
「Netbeans からの Matisse コードがブロックされています」
ここに表示されているように編集できます
「プライベートでブロックされたコードのため、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 コンポーネントにアクセスする」
複数のフレームを使用しているように聞こえます。複数の JFrames の使用、良い/悪い習慣を参照してください。
アップデート
「私はマティスで作成された MAIN フレームを持っていますが、いくつかの理由により、別のクラスで X 検証が発生したときに、別のクラスからマティス内の textField の背景を設定する必要があります」
次にできることは、Main
フレームの参照を他のクラスに渡し、フレームに asetter
を含めること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);
}
}