【问题标题】:Creating dynamic JLabels and JButtons创建动态 JLabel 和 JButton
【发布时间】:2012-09-12 06:54:48
【问题描述】:

我正在尝试根据属性文件中定义的 URL 数量创建动态 JButtonJLabel

到目前为止我尝试过的是:

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

但它会为一个标签打印三次按钮。如何解决这个问题?另外如何为这些按钮编写动作监听器?

【问题讨论】:

    标签: java swing jbutton jlabel


    【解决方案1】:

    如果您想为您的按钮实现动作监听器,您可以在创建按钮时简单地创建并添加一个新的 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);
    }
    

    【讨论】:

      【解决方案2】:

      删除内部循环(基于 j)。

      【讨论】:

        猜你喜欢
        • 2013-09-07
        • 2013-09-27
        • 2013-11-26
        • 2013-06-20
        • 2016-07-02
        • 1970-01-01
        • 2014-10-20
        相关资源
        最近更新 更多