更改(多个)Jlabels中的参数

时间:2011-02-01 09:17:29

标签: java swing jlabel

我有一个包含50个Jlabels的Swing GUI:

{
    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){}来在这个地方添加一个新标签。

可能有一个更好的方法来做到这一点,我正在尝试进行原油库存显示,根据增加或减少来改变股票价格和颜色。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

将JLabel存储在地图中。也许将它们放在股票代码上,就像这样:

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

当您需要更新标签时,请使用它的密钥查找并更改其颜色:

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

另外,考虑使用JTable。我见过的大多数股票代码都使用一个。