我有一个包含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){}来在这个地方添加一个新标签。
可能有一个更好的方法来做到这一点,我正在尝试进行原油库存显示,根据增加或减少来改变股票价格和颜色。
答案 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);
}
输出:
答案 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。我见过的大多数股票代码都使用一个。