当前位置: 首页 > 知识库问答 >
问题:

Java-在运行时添加和删除按钮

卢锋
2023-03-14

所以我对Java Swing GUI是新手,我正在创建一个学生管理系统。这个想法是,当程序启动时,屏幕上的每个模块都有一个按钮,单击每个按钮会将您带到另一个包含模块信息的窗口。我想要一个能够添加和删除模块的功能,所以我的想法是,在运行时,您可以添加一个代表新模块的新按钮,或者在您想要删除该模块时删除一个按钮。

我已经尝试了许多不同的东西,但我遇到的问题最多的是我可以创建按钮,但我不能将其添加到框架中。

public class GUI {
//  -=GLOBAL VARIABLES=-
    public int moduleCount = 0; //Setting the module count to 0, this will increase/decrease as modules are made/deleted. This variable allows the program to determine where to position each button
    
//  -=CREATING MODULE METHOD=-  
    public void addButton(String name, String text){
        //Calculates positioning of each button based on quantity of buttons
        moduleCount += 1;
        int x = 150 / moduleCount;
        int y = 100 / moduleCount; 
        
        JButton newButton = new JButton();
        newButton.setText(text);
        newButton.setBounds(x, y, 100, 40);
        newButton.setName(name);
    }

    public GUI () {
        
//      -=CREATING THE FRAME=-
        JFrame frame = new JFrame("Student Management System"); //Creating a new frame
        frame.setSize(750, 500);//400 width and 500 height  
        frame.setLayout(null);//using no layout managers 
        frame.setVisible(true);//making the frame visible 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        
    }
}

如果这是可能的(即使我完全走错了方向),任何帮助都将不胜感激:)

编辑:我知道我实际上并没有将按钮添加到框架中,我已经尝试过了。每次我使用

frame.add(newButton);

或者先铸造GUI,它只是没有将其添加到框架中

共有1个答案

贡英华
2023-03-14
frame.add(newButton);
frame.revalidate(); // not necessary with null layout, but please don't use null
frame.repaint();

这应该能帮你解决问题,但是听听那些对你的问题发表评论的人;不要使用空布局,因为它会导致它不响应大小调整,并使代码凌乱。

通常需要重新验证的原因是添加了组件,因此布局需要重新计算组件的位置。

顾名思义,重新绘制需要告诉帧重新绘制,但如果只是更改组件(如调用“new”),则通常不需要重新绘制。

还有一个小技巧:如果刚添加的元素只在调整帧大小后出现,那么您忘记了重新验证和/或重新绘制。

 类似资料:
  • 问题内容: 我的应用程序有一个模块,允许用户在运行时在jLayeredpane上添加jButton。我想向此动态添加的内容添加动作侦听器,而且我还必须提供在运行时删除动态添加的按钮的访问权限。有什么办法吗? 问题答案: 原始答案 总体上不错,但是在这种情况下做的却不同 为了跟踪添加的任意数量,您需要将它们保留在列表中。 因此,在创建新按钮之后,将侦听器添加到该按钮,然后将其添加到窗格中,然后需要将

  • 有没有什么方法可以动态编辑加载到Drools中的规则,而不需要重新加载新的DRL文件? 我们试图使用Drools作为规则引擎,但在我们的用例中,规则的添加和删除非常频繁,我们希望避免每次发生这种情况时都必须重新加载整个.drl文件。

  • 问题内容: 是否可以在运行时从Java枚举中添加和删除元素? 例如,我可以从文件中读取枚举的标签和构造函数参数吗? 问题答案: 不,枚举应该是完整的静态枚举。 在编译时,你可能希望从某种形式的另一个源文件生成enum 文件。你甚至可以创建这样的文件。 在某些情况下,你可能需要一组标准值,但允许扩展。常用的方法是为接口提供一个为标准值实现一个。当然,当你仅引用时,你将失去的能力。

  • 我正在开发一个android应用程序,其中我制作了一个ListView。我必须为ListView中的每一行添加两个按钮。这两个按钮分别是“添加”和“删除”。当用户选择其中一个按钮时,应采取一些措施。我该怎么做?

  • 问题内容: 不幸的是,似乎这个最近关闭的问题没有得到很好的理解。这是典型的输出: 我再试一次问这个问题:我如何能K 我 L * L于运行第一开顶层Container,并与关闭对我摇摆恶梦帮助? 问题答案: 调用允许主机平台回收重量级对等方消耗的内存,但只有在事件在上处理后才能这样做。即使这样,也是一个建议。 附录:查看噩梦的另一种方法是通过探查器。使用运行下面的示例jvisualvm,你可以看到定

  • ADDING AND REMOVING SOFTWARE Linux 或任何操作系统中最基本的任务之一便是添加和删除软件。您经常需要安装发行版中没有附带的软件,或者删除不需要的软件,这样就不会占用硬盘空间。 有些软件安装需要依赖其他软件才能运行,有时您会发现您可以在软件包安装过程中一次性下载所需的所有软件,软件包是一组文件(通常是库和其他依赖项),您需要这些文件才能使软件成功运行。当您安装一个包时