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

动态生成的jbutton

宋耀
2023-03-14

我正在尝试为一栋建筑制作一个模拟电梯的GUI(实际上是为了测试线程/c扫描),但当生成电梯控制面板的按钮和每个楼层的按钮时,我有点卡住了。我考虑为每层楼生成一对新的按钮,并为每部电梯生成一个新的控制面板。此外,拥有不同数量的楼层也很困难。不管怎样,我的问题是,这样做最好的方式是什么?也许不必为每件事都生成新的按钮,只需使用一组按钮并更改每个楼层/电梯的操作?我这么问是因为我对GUI不太熟悉。谢谢你的帮助

共有2个答案

云和硕
2023-03-14

在楼层数可变的情况下,可以创建一组按钮:

JButton[] buttons = new JButton[MAX_NUMBER_OF_FLOORS];

然后,当您在运行时确定确切的楼层数时,您可以去实例化并添加按钮:

for(int i=0; i<numberOfFloors; i++) {
    buttons[i] = new JButton();
    controlPanel.add(buttons[i]);
}

这样的办法应该行得通。

分配MAX_NUMBER_OF_FLOORS像100这样的大数字,应该有问题给出的可能限制。

郜卓君
2023-03-14

如果所有的电梯和控制面板都是相同的,您可以使用单数方法并传入电梯或控制面板。CustomPanel扩展了JPanel,并有一个方法foo。

public void createElevatorButtons(final CustomPanel panel) {
    ArrayList<JButton> buttons = new ArrayList<>(); //arraylist of buttons we can keep track of
    JPanel buttonPanel = new JPanel(); //the visible component
    for(int i = 1; i <= numberOfFloors;i++) {
        JButton button = new JButton(String.valueOf(i)); //creates buttons for floors 1 to max
        buttons.add(button);
        buttonPanel.add(button);
    }
    panel.add(buttonPanel);

    //add the action listeners
    for(JButton button : buttons) {
        button.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JButton floor = (JButton) e.getSource();
                int floorNumber = Integer.parseInt(floor.getText());
                panel.foo(floorNumber); //we tell the elevator/panel/whatever to do something, you will have to extend JPanel to do foo
            }
        });
    }
}
 类似资料:
  • 问题内容: 假设我有一个格式为基本XML的文件,如下所示: 我想在运行时变成这样的东西: …,然后将新创建的枚举传递给我的应用程序。我将如何实现这样的目标?可以吗 问题答案: 您尝试做的事情没有任何意义。枚举实际上仅是为了编译时的利益,因为它们表示一组固定的常量。在运行时,动态生成的枚举的含义是什么- 与普通对象有什么不同?例如: 您的XML可以解析为新实例化的对象,这些对象可以存储在某些程序中,

  • 问题内容: 我想生成大量的Tkinter ,它们可以做不同的事情。我有以下代码: 如果为5,尽管我得到标记为的按钮,但单击它们时都可以。 我需要第一个按钮执行,第二个按钮执行,依此类推。 问题答案: 我认为问题在于,循环结束后,会获取的最终值。这应该解决(未测试): 更新资料 顺便说一句,这是通过在函数中添加一个自变量的默认值来实现的,该默认值是根据在循环中创建每个变量时的值计算得出的,而不是在稍

  • GIF(Graphics Interchange Format,图形交换格式)是一种“位图”图像格式,它以 作为图像的扩展名。GIF 图片非常适合在互联网中使用,这是因为它采用了图像预压缩技术,该技术的应用,在一定程度上减少了图像传播、加载所消耗的时间。 与其他格式的图片相比,GIF 还有一项非常重要的应用,那就是生成动态图。我们知道,Pillow 能够处理多种图像格式,包括 GIF 格式,它可以

  • 我有一个GraphQL服务器,它能够为指定源提供timeseries数据(例如,传感器数据)。获取传感器数据的示例查询可能是: 在我的前端,我想允许用户选择一个或多个源,并显示一个图表,每一个都有一行。通过使用下面这样的查询,似乎可以实现以下操作: 大多数GraphQL教程似乎关注于静态查询(例如,唯一改变的是变量,而不是请求的实际形状)--但在我的例子中,我需要查询本身是动态的(为我选择的每个I

  • 我基于thymeleaf模板创建了一个pdf文件,实际上我正在使用模板分解器flying Discer将文件写入输出流,但由于我无法访问前端以定义每次客户端需要时生成的摘要内容,我认为最好在服务器端生成pdf文件。所以我的问题是: 有没有办法获取写入数据的输出流,并将其转换为动态写入,这样就不会在本地存储中创建数据 这是我业务逻辑的一部分: 我在控制器中使用它,在响应实体中使用attachemen

  • 我试图使用Xerces-J动态生成XML schema,但出现了以下错误,希望得到相关帮助。