在应用程序中添加到 JPanel

Adding to JPanel in application

提问人:Peddler 提问时间:3/11/2012 最后编辑:Peddler 更新时间:3/12/2012 访问量:106

问:

当单击特定按钮时,我希望将另一组按钮添加到面板中,但是在我这样做的那一刻,我可以根据需要多次添加它们,我需要这只能一次。执行此操作的最佳方法是在 while 循环中设置按钮和字段的添加吗?

   if(e.getSource() == selectScript){

                while(scriptB < 1 ){
                imageID = new JTextField("INT");
                imageDescription = new JTextField("imgDescription");
                imagePath = new JTextField("imagePath");
                manageImageTab.add(imageID);
                manageImageTab.add(imageDescription);
                manageImageTab.add(imagePath);
                insertImage = new JButton("Add an Image");
                insertImage.addActionListener(new dbaccess());
                manageImageTab.add(insertImage);

                manageImageTab.revalidate();
                validate();
                scriptB++;

                }
}
java swing jpanel jbutton 重绘

评论

0赞 kleopatra 3/11/2012
-1 表示(在我看来仍然是故意的)违反 Java 命名约定
0赞 Peddler 3/11/2012
@kleopatra无意的,只是正在处理的同一个应用程序。
1赞 kleopatra 3/12/2012
您可以编辑您的问题(提示,提示:-)并且应该重构你的代码

答:

1赞 vextorspace 3/11/2012 #1

如果我理解正确,我会使用一个标志 alreadyAdded,该标志以 false 开头,在添加控件后设置为 true,然后不允许它在此之后添加。

3赞 Hovercraft Full Of Eels 3/11/2012 #2

也许与其添加和删除 JButtons,不如在代码开始时添加一次按钮,只是不要让它们可见,直到你需要它们,或者最好将它们全部放在一个不可见的 JPanel 上,然后在需要时显示。只是不要忘记在包含按钮及其面板的容器上打电话。revalidate()repaint()

评论

0赞 Peddler 3/11/2012
我喜欢添加一次并在需要时设置可见的想法。我认为,将它们保持在一段时间循环中是坏主意/不是好习惯?
0赞 Hovercraft Full Of Eels 3/11/2012
@Peddler:我不知道“让他们处于一段时间循环中”是一个坏主意,因为我不太清楚你的意思。
0赞 Peddler 3/11/2012
对不起,措辞不当。按钮的添加是在 while 循环中进行的,一旦单击按钮一次,就无法访问该循环。
0赞 Hovercraft Full Of Eels 3/11/2012
@Peddler:我仍然不确定你的意思。如果您仍然需要这方面的帮助,您可能需要编辑您的问题并显示您的确切意思。
1赞 Hovercraft Full Of Eels 3/11/2012
啊,我明白你的意思了。这可能行得通,但在我看来,这很容易搞砸。最好将组件作为类字段,在应用程序中只创建一次,然后添加它们或使它们可见。