2012-09-11 62 views
1

我試圖根據屬性文件中定義的URL的數量創建動態JButtonJLabel創建動態JLabel和JButton

我迄今爲止嘗試是:

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

但它打印按鈕三次的標籤。如何解決這個問題?還有如何編寫這些按鈕的動作偵聽器?

回答

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

刪除內部循環(基於j)。

+0

非常感謝..它的工作.. –