动态Jpanels - 为它们分配值

时间:2016-04-02 22:13:56

标签: java swing jpanel

美好的一天。我有一个我正在处理的小代码,它允许我将JPanels添加到面板中。我成功地使事情按照我希望的方式工作,但它给我留下了一个问题。如何为它们分配值。

package NotificationPush;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import org.jdesktop.swingx.VerticalLayout;

public class NewClass extends javax.swing.JPanel {
    List<JPanel>jps = new ArrayList<JPanel>();
    public NewClass() {
        setBounds(100, 100, 778, 426);
        setLayout(new VerticalLayout());

        JButton addButton = new JButton();
        addButton.setText("Click to add a new Panel");

        JTextField jtf = new JTextField();
        jtf.setText("Add here what you want to see in the button click");

        add(addButton);
        add(jtf);

        addButton.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                JPanel jp = new JPanel();
                jp.setBackground(Color.red);
                JButton btn = new JButton();
                btn.setText("JButton number "+(jps.size()+1));
                btn.addActionListener(new ActionListener(){
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        JOptionPane.showMessageDialog(addButton, "This button has been clicked");
                    }
                });
                jp.add(btn);
                jps.add(jp);
                add(jps.get(jps.size()-1));
                revalidate();
                repaint();
            }
        });
    }

    public static void main(String args[]){
        NewClass jp = new NewClass();
        JFrame jf = new JFrame();
        JScrollPane scp = new JScrollPane();

        scp.setBounds(10, 101, 742, 276);
        jf.setBounds(100, 100, 778, 426);

        jf.add(scp);
        scp.setViewportView(jp);
        scp.getVerticalScrollBar().setUnitIncrement(16);

        jf.setPreferredSize(new Dimension(500,500));
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.show();  
    }

}

我想要发生的是我在文本框中输入的内容将被分配给生成的新按钮,当我点击该按钮它将响应我分配给他们的字符串。任何想法我怎样才能做到这一点?

其次,我想添加一个功能,我可以在单击按钮后删除面板。我有预感,我需要为这些面板分配一些内容,以便我可以从主面板中删除它们。如果需要,请在代码上添加参考。谢谢。

0 个答案:

没有答案