私は個人的なプロジェクトで初めてJavaFXで遊んでいます。外部のFXMLコントローラからタブへの参照を取得する
Tab(PieChartを追加)でコンテンツを更新できるようにしたいが、FXMLコントローラの外から、それが可能かどうか誰にでも教えてもらえますか?関連するタブへの参照はどのようにして取得できますか?追加するアイテムの場所を指定する方法はありますか?
更新:いくつかのコード例を追加しました。
インタフェース:
interface ChartStrategy {
public void DisplayChart(Info info)
}
2つの実装:
public class BarChartStrategy extends ChartStrategy {
public void DisplayChart(Info info)
{
// Create bar charts on specific tabs in the UI
}
}
public class PieChartStrategy extends ChartStrategy {
public void DisplayChart(Info info)
{
// Create pie charts on specific tabs in the UI
}
}
コンテキスト:
public class ChartContext {
private ChartStrategy strategy;
public void setChartStrategy(ChartStrategy strategy) {
this.strategy = strategy;
}
public void drawGraphs(Info info) {
strategy.DisplayChart(info);
}
}
を
ホープこれは私が何をしようとしているの明確なアイデアを提供します
私のコントロール私は、グラフを生成するためのデータが解析される、ユーザーが選択したファイルを読み込んでいます。
@FXML
private void handleButtonAction(ActionEvent event) {
// Load the file and parse the data
...
ChartContext charts = new ChartContext();
charts.setChartStrategy(new PieChartStrategy());
}
は、だから私の独創的な考えは、私は実装でDisplayChart関数からグラフを描くということでしたが、それは良い考えではありませんようです - 誰も私にこれを取得するための最良の方法で、ここでいくつかのアドバイスを与えることができます作業?
なぜか尋ねることはできますか?これはまさにコントローラーがやろうとしているものです。特定のタブを返すコントローラ内のメソッドを定義し、必要な場所から呼び出すことができますが、UIコンポーネントをコントローラの外部に公開することはお勧めしません。 –
私はストラテジの実装から直接UIにチャートを作成することで、ストラテジパターンを使用してUIのさまざまなチャートタイプの表示を処理しようとしていました。悪いアイデア?デザインパターンを授業に取り入れて、このパターンの周りに頭を浮かべます。 –
悪い考えではありませんが、コントローラからUIコンポーネントを公開する必要はありません。コントローラーレベルで戦略を定義します。つまり、コントローラーには、そのタイプが戦略(インターフェース)であるフィールドへの参照があります。コントローラーのコンストラクターに渡されるストラテジー実装を指定して、コントローラーをFXMLではなくコードで作成します。次に、コントローラが戦略を呼び出し、適切なタブにチャートを配置できます。 –