在 Java 的运行时创建按钮
Creating Buttons during runtime in Java
我想基于数组向我的 Java 应用程序添加一些按钮。假设数组中有 10 个对象,我想创建 10 个按钮。如果我删除数组中的 2 个对象,按钮也应该被删除。关于这个问题,我考虑了 3 件事。
一个 for 循环 - 但我认为按钮只存在于循环内,而且我不知道如何命名按钮(变量名称而不是标签)。
一个线程
一个单独的 class
虽然我不知道该怎么做。
我真的可以通过循环命名变量吗?
我的想法是否可行?
如果您将按钮添加到 JPanel
,它会在 for 循环之外继续存在,所以不用担心。为您的按钮创建一个 JPanel
,并使用 ArrayList<JButton>
跟踪您添加的按钮,这样您就可以根据需要删除它们。要从面板中删除它们,请参阅 this 答案。记得重新绘制(=刷新)JPanel。
JButton button1 = ...;
// Add it to the JPanel
//
ArrayList<JButton> buttons = new ArrayList<>();
buttons.add(button1);
// Other stuff...
// It's time to get rid of the button
JButton theButtonIWantToRemove = buttons.get(0);
buttons.remove(0);
//Get the components in the panel
Component[] componentList = panel.getComponents();
//Loop through the components
for(Component c : componentList){
//Find the components you want to remove
if(c == theButtonIWantToRemove){
//Remove it
panel.remove(c);
}
}
//IMPORTANT
panel.revalidate();
panel.repaint();
我想基于数组向我的 Java 应用程序添加一些按钮。假设数组中有 10 个对象,我想创建 10 个按钮。如果我删除数组中的 2 个对象,按钮也应该被删除。关于这个问题,我考虑了 3 件事。
一个 for 循环 - 但我认为按钮只存在于循环内,而且我不知道如何命名按钮(变量名称而不是标签)。
一个线程
一个单独的 class
虽然我不知道该怎么做。
我真的可以通过循环命名变量吗? 我的想法是否可行?
如果您将按钮添加到 JPanel
,它会在 for 循环之外继续存在,所以不用担心。为您的按钮创建一个 JPanel
,并使用 ArrayList<JButton>
跟踪您添加的按钮,这样您就可以根据需要删除它们。要从面板中删除它们,请参阅 this 答案。记得重新绘制(=刷新)JPanel。
JButton button1 = ...;
// Add it to the JPanel
//
ArrayList<JButton> buttons = new ArrayList<>();
buttons.add(button1);
// Other stuff...
// It's time to get rid of the button
JButton theButtonIWantToRemove = buttons.get(0);
buttons.remove(0);
//Get the components in the panel
Component[] componentList = panel.getComponents();
//Loop through the components
for(Component c : componentList){
//Find the components you want to remove
if(c == theButtonIWantToRemove){
//Remove it
panel.remove(c);
}
}
//IMPORTANT
panel.revalidate();
panel.repaint();