【问题标题】:Changing parameters within (multiple) Jlabels更改(多个)Jlabels 中的参数
【发布时间】:2011-02-01 09:17:29
【问题描述】:

我有一个带有 50 个左右 Jlabel 的 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){} 来在该位置添加一个新标签。

可能有更好的方法来做到这一点,我正在尝试制作一个粗略的股票显示,根据涨跌来改变股票价格和颜色。

【问题讨论】:

  • 一个 JTable 会更适合这个 IMO。

标签: java swing jlabel


【解决方案1】:

好吧,下面的解决方案丑陋的,所以我只是想出了另一个解决方案...您可以设置每个标签的名称,以便获得特定的标签。而且您不需要任何其他结构来保存信息。

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);
}

输出:

【讨论】:

    【解决方案2】:

    将您的 JLabels 存储在地图中。也许将它们键入股票代码,如下所示:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      • 2019-07-13
      • 2023-03-22
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      相关资源
      最近更新 更多