我想知道如何动态添加checkboxes
和名称。checkboxes
的数量紧跟MySQL
中的行数,并且从MySQL
检索名称。假设我在MySQL
中有三个数据,所以我将得到上面图像的输出。
这是我的A类代码
checkAPI api= new checkAPI();
try
{
num = api.displayCheckBoxAndLabel(); // get 3
List<String> allName= api.displayName(); // [John,Tony,Kik]
}
catch (Exception e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
deleteAdmin delete = new deleteAdmin(num,allName);
delete.setVisible(true);
setVisible(false);
dispose();
}
然后将两个参数传递给类deleteAdmin
public class deleteAdmin extends JFrame {
private JPanel contentPane;
private JTextField userText;
private JTextField txtpassword;
JFrame f= new JFrame(" Add Admin");
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
button frame = new button();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public deleteAdmin(int num, List<String> names)
{
super("Delete Admin");
setBounds(100, 200, 340, 229);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(35, 19, 242, 146);
contentPane.add(panel);
panel.setLayout(null);
JCheckBox[] checkBoxList = new JCheckBox[num];
for(int i = 0; i < num; i++) {
checkBoxList[i] = new JCheckBox("CheckBox" + i);
contentPane.add(checkBoxList[i]);
}
}
}
但是,我得到了这种输出。没有显示复选框:(
最佳答案
快速浏览一下,您的代码中至少有两个奇怪的地方。
如果您的面板未使用layout manager,则必须明确调整尺寸并放置组件。
必须在事件分配线程上专门创建和操作Swing组件。所以如果你的代码
deleteAdmin delete= new deleteAdmin(num,allName);
delete.setVisible(true);
setVisible(false);
dispose();
在EDT中运行,因为它位于某个按钮处理程序内,或者可以正常运行,否则,您需要使用
invokeLater()
进行操作。