首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用相同的actionListener为网格上的每个按钮打开单独的图形用户界面

使用相同的actionListener为网格上的每个按钮打开单独的图形用户界面
EN

Stack Overflow用户
提问于 2015-07-13 08:13:05
回答 1查看 38关注 0票数 1

我有一个循环,可以生成一个3x3的按钮网格。我正在尝试这样做,当按钮被按下时,会打开一个窗口,供用户添加有关该按钮的数据。窗口打开后,一切都第一次正常工作。一旦我保存这个窗口并单击一个新按钮,就会有一个白色方块(可能是面板)覆盖所有内容。如果我将窗口放大,我可以看到它后面的文本字段,但白色方块保持不变(未展开窗口的大小)。对窗口执行“与”操作后,我可以断定我为最后一个按钮添加的数据仍然存在于“新建”窗口中,这让我知道我可能正在打开相同的窗口,并且没有创建新的窗口。有没有办法每次都创建一个全新的窗口?

下面是创建按钮的循环

代码语言:javascript
复制
    for (int i = 0; i < addButtons3.length; i++) {
       addButtons3[i] = new JButton("     Add Bed     "); // make text big
       addButtons3[i].addActionListener(new RoomListener());
       addButtons3[i].setActionCommand("" + i);
        gbc.fill = GridBagConstraints.BOTH;
       room3Panel.add(addButtons3[i]);
    }       

下面是每个按钮的actionListener

代码语言:javascript
复制
class  RoomListener implements ActionListener{
    public void actionPerformed(ActionEvent event){
    AbstractButton btn = (AbstractButton) event.getSource();
    source = event.getActionCommand();
    System.out.println(source);
    x = Integer.parseInt(source);
    y = Integer.parseInt(roomSource);
    btn.setText("Adding bed..");    

    intFrame8.setMaximizable(true); //Add maximize
    intFrame8.setIconifiable(true); //Make it configurable
    intFrame8.setResizable(true); //Make it resizable
    intFrame8.setClosable(true); //How will it react on close?
    intFrame8.setDefaultCloseOperation(DISPOSE_ON_CLOSE); //Like this   
    intFrame8.setSize(320,240);
    desktopPane.add(intFrame8);

    JPanel addRoomPanel = new JPanel();
    addRoomPanel.setLayout(new GridLayout(7,1,5,5)); //row/col/rspace/cspace
    addRoomPanel.setBackground(Color.white);
    intFrame8.getContentPane().add(addRoomPanel);   
    intFrame8.toFront();

    //Name text field
    nameLabel.setText("Name: ");
    name.addActionListener(new nameListener());
    addRoomPanel.add(nameLabel);
    addRoomPanel.add(name);

    //DoB text field
    dobLabel.setText("Date of Birth: ");
    dob.addActionListener(new dobListener());
    addRoomPanel.add(dobLabel);
    addRoomPanel.add(dob);

    //Passport Number text field
    passNum.addActionListener(new passNumListener());
    addRoomPanel.add(passNumLabel);
    addRoomPanel.add(passNum);

    //Start Date text field
    startDate.addActionListener(new startDateListener());
    addRoomPanel.add(startDateLabel);
    addRoomPanel.add(startDate);

    //End Date text field
    endDate.addActionListener(new endDateListener());
    addRoomPanel.add(endDateLabel);
    addRoomPanel.add(endDate);

    //Comments section text field
    comments.addActionListener(new commentsListener());
    addRoomPanel.add(commentsLabel);
    addRoomPanel.add(comments);

    addBedSave.addActionListener(new bedSaveListener());
    addRoomPanel.add(addBedSave);

    intFrame8.setVisible(true);
    }
}

下面是关闭窗口的“保存”按钮的actionListener

代码语言:javascript
复制
class bedSaveListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
        System.out.println(nameTemp);
        nameList[x][y] = nameTemp;
        dobList[x][y] = dobTemp;
        startDateList[x][y] = startDateTemp;
        endDateList[x][y] = endDateTemp;
        passNumList[x][y] = passNumTemp;
        commentsList[x][y] = commentsTemp;
        intFrame8.dispose();

        switch(y){
        case 0:
            intFrame4.toFront();
            addButtons1[x].setText(nameTemp);
            break;
        case 1:
            intFrame5.toFront();
            addButtons2[x].setText(nameTemp);
            break;
        case 2:
            intFrame6.toFront();
            addButtons3[x].setText(nameTemp);
            break;
        case 3:
            intFrame7.toFront();
            addButtons4[x].setText(nameTemp);
            break;
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2015-07-13 13:22:13

建议:对ActionListeners使用if(e.getSource == some_JButton){//code}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31373830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档