2011-02-01 5 views
1

私は50かそこらのJLabelとSwingのGUIをしました:パラメータの変更のJLabel

{ 
    jLabel1 = new JLabel(); 
    getContentPane().add(jLabel1, "0, 0"); 
    jLabel1.setText("AAPL 1453.54 2334.34 3234.32"); 
    jLabel1.setForeground(new java.awt.Color(0,249,0)); 
} 

私は条件文の大きな束を記述することなく、TXTや色を変更できるようにしたいです。これを行う最善の方法は何ですか?

私は、場所に新しいラベルを追加するためにoverWrite(String text、int hPos、int vPos){}メソッドを書くと考えていました。

これを行うにはもっと良い方法があるかもしれませんが、増減に応じて株価と色を変更する粗在庫表示をしようとしています。

+1

このIMOでは、JTableがより適しています。 – dogbane

答えて

2

Okey、以下のソリューションですので、別の解決策を思いついただけです...特定のラベルを取得できるように各ラベルの名前を設定できます。また、情報を保持するために他の構造体は必要ありません。

JLabel label = new JLabel(); 
label.setName("the_name"); 
あなたは、その後のコンポーネントの上に(ちょうど他の解決策のように)反復処理し、このような特定のものを得ることができ

for (Component c : frame.getContentPane().getComponents()) { 
     if (c.getName().equals("the_name")) { 
      // do the modifications... 
     } 
    } 

旧解決策:これは醜いですが、動作します..: )

public static void main(String[] args) throws Exception { 

    JFrame frame = new JFrame("Test"); 
    frame.setLayout(new GridLayout(0, 1)); 
    frame.add(new JButton("Hello")); 
    frame.add(new JLabel("World", JLabel.CENTER)); 
    frame.add(new JButton("Hello")); 
    frame.add(new JLabel("World", JLabel.CENTER)); 

    for (Component c : frame.getContentPane().getComponents()) { 
     if (c instanceof JLabel) { 
      ((JLabel) c).setText("Friend"); 
      c.setForeground(Color.RED); 
     } 
    } 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(400, 300); 
    frame.setVisible(true); 
} 

出力:

enter image description here

+0

実際、これは醜いです – Riduidel

1

マップにJLabelsを保存します。また

JLabel label = labelMap.get("AAPL"); 
label.setForeground(Color.RED); 

、JTableのを使用して考える:あなたは、ラベルを更新する、それが重要なのです使用してそれを見て、その色を変更する必要がある場合

Map<String, JLabel> labelMap = new HashMap<String, JLabel>; 
labelMap.put("AAPL", jLabel1); 

:たぶんこのように、銘柄記号の上にそれらをキーイング。私が見たほとんどの株価指数は1つを使用して実装されています。

関連する問題