JPanelクラスのJPanelの色を設定するMVC構造体があります。私は2つの選択肢のどれが最良の解決策であるのだろうかと思います。ゲッターとセッターの代替品
- 代替2.
代替とセッターを有するパネル・クラスの色を設定するパネルクラス
ありがとうございます!
代替案1:
実行スレッド内
コントローラクラス:
theView.getPanelClass().getPanel().setBackground(new Color(255));
Viewクラス
private final PanelClass panel = new PanelClass();
public PanelClass getPanelClass() {
return panel;
}
(theViewに宣言された)パネルクラス
JPanel thePanel = new JPanel();
public JPanel getPanel() {
return thePanel;
}
代替2:
コントローラクラス スレッドを実行している場合:
theView.setPanel(new Color(255));
Viewクラス
private final PanelClass panel = new PanelClass();
public void setPanel(Color col) {
panel.setThePanel(col);
}
(theViewで宣言された)Panelクラス
JPanel thePanel = new JPanel();
public void setThePanel(Color c) {
thePanel.setBackground(c);
}
UPDATE 次のように私は今、ビュークラスはので、私のコードをしている編集しましたJPanelクラスを通して色を設定します。
ALTERNATIVE 3:スレッドを実行するには
Controllerクラス :
if(x>y) {
theView.setPanel(1);
} else {
theView.setPanel(2);
}
Viewクラス
private final PanelClass panel = new PanelClass();
public void setPanel(int n) {
panel.setThePanel(n);
}
Panelクラス(DECLAR TheView in ed)
public void setThePanel(int n) {
switch (n) {
case 1:
panelS1.setBackground(new Color(255));
break;
case 2:
panelS1.setBackground(new Color(0));
break;
}
}
はい、しかし、あなたは実際にそれをやっているべきであるの責任を考えるか?ビューはx/yの比較を観察し、それに基づいてそれ自体を更新する必要があります。コントローラが行うべきことは、ビューの更新自体ではなく情報を提供することです。 – Sebas
ありがとうございます。コントローラーから色を設定する理由は、ifステートメントに応じて色が異なるからです。 setBackground(new Color(0、0、0)); setBackground(new Color(0、0、0));もしそうであれば、 ); } – acroscene
私のコメントはまだ立っていると思います。しかし、それはより広い建築上の問題があるように見えるので、この質問を超えて拡大するかもしれません。コードレビューを検討することをお勧めします。 – Sebas