我正在尝试根据属性文件中定义的网址数创建动态JButton
和JLabel
。
到目前为止我尝试的是:
AppResources.properties file
urls=http://google.com,http://stackoverflow.com,http://gmail.com
urlLabels=Internet Users,MPLS Users,Physical Access (Not Advised)
在我的Java程序中,我正在阅读属性文件,并基于comma separator
分割字符串,现在我需要相应地生成按钮和标签。就像first URL Label --> first URL as Button
等等。
到目前为止,我的方式是:
String url = properties.getProperty("urls");
String urlLabel = properties.getProperty("urlLabels");
String[] jButton = url.split(",");
String[] jLabel = urlLabel.split(",");
for (int i = 0; i < jLabel.length; i++) {
JLabel labels = new JLabel(jLabel[i]);
panel.add(labels);
for (int j = 0; j < jButton.length; j++) {
JButton button = new JButton(jButton[j]);
panel.add(button);
}
}
但它会为标签打印三次按钮。如何解决这个问题?另外如何为这些按钮编写动作侦听器?
答案 0 :(得分:3)
删除内循环(基于j)。
答案 1 :(得分:3)
如果要为按钮实现动作侦听器,可以在创建按钮时创建并添加新的ActionListener。
示例:
for (int i = 0; i < jLabel.length; i++) {
final String str = jLabel[i];
JLabel labels = new JLabel(str);
panel.add(labels);
JButton button = new JButton(jButton[i]);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(panel, str);
}
});
panel.add(button);
}