美好的一天。我有一个我正在处理的小代码,它允许我将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();
}
}
我想要发生的是我在文本框中输入的内容将被分配给生成的新按钮,当我点击该按钮它将响应我分配给他们的字符串。任何想法我怎样才能做到这一点?
其次,我想添加一个功能,我可以在单击按钮后删除面板。我有预感,我需要为这些面板分配一些内容,以便我可以从主面板中删除它们。如果需要,请在代码上添加参考。谢谢。