Java GUI JButton到actionlistener

时间:2012-01-11 12:15:21

标签: java swing actionlistener jtextfield joptionpane

我在NetBeans中创建了一个GUI。这是一个聊天程序,我有4个突击队,如/ join,/ leave,/ whisper和/ leave

private void CommandoActionPerformed(java.awt.event.ActionEvent evt) {                                                 
        JOptionPane.showMessageDialog(rootPane, "The following commandos are:" + "\n" + "\n" + "/join Channel name" + "\n" + "/leave channel name" + "\n" + "/whisper nick message" + "\n" + "/quit - quit the program");
    }  

这没关系,但我想要actionlister而不是showMessageDialog,所以我可以推送它们,它来自我的JTextField。我想我可以把它们带到那里,但我不知道如何将动作滑动器与此结合起来。

编辑: 我想要的是按下Commando按钮并启动一个窗口,我有4个新按钮,每个按钮有一个突击队(/ join,/ leave,/ whisper和/ exit)所以当我按下这些按钮时,我会得到突击队在我的文本字段中,所以我只需要编写其余内容。 因此,如果我按下“/ join”按钮,我只需要编写频道名称。

EDIT2:如果我在描述这个问题时非常糟糕,我可以展示我想要的和迄今为止所做的事情:

 private void showCommandActionPerformed(java.awt.event.ActionEvent evt) {                                                 
        Object[] options = { "/join", "/leave", "/whisper", "/quit", "Ingenting" };


        int choice= JOptionPane.showOptionDialog(rootPane, "What do u want to do? ", null, WIDTH, WIDTH, null, options, rootPane);

        switch (choice) {
                case 0:
                    skrivTekst.setText("/Join ");
                skrivTekst.requestFocus();
                    break;
                case 1:
                    skrivTekst.setText("/Leave");
                skrivTekst.requestFocus();
                    break;
                case 2:
                    skrivTekst.setText("/Whisper");
                skrivTekst.requestFocus();
                    break;
                case 3:
                skrivTekst.setText("/Join ");
                skrivTekst.requestFocus();

                case 4:

                    System.exit(1); //this is wrong. i just want to close this window, not the whole program 
                default:

                    JOptionPane.showMessageDialog(null, "donno what!?!?!?!?!?!?!" + choice);
            }


    }                 

我希望这能表明我想要的和我所做的。对所有人来说:) 所以我唯一的问题是关闭一个JOptionPane窗口而不是程序

3 个答案:

答案 0 :(得分:2)

1)您可以在JRadioButtons中实施ButtonGroup,然后只有其中一个选项可供选择,您可以在ActionListenerActionListener内{ {1}} {1}} setText()

2)请使用标准Swing JTextField而不是JComponents准备Components,有时候太难以覆盖基本的Swing方法

enter image description here

基于示例的简单示例,来自教程

的JRadioButton
palette

答案 1 :(得分:1)

你想要4个按钮,每个按钮在文本字段中设置命令文本,是吗?

joinButton.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        theTextField.setText("/join");
    }
});

对其他3个按钮也一样。

这是非常基本的东西。阅读tutorial about event listeners

答案 2 :(得分:0)

这样的东西?

public void actionPerformed(ActionEvent event) {
    Object source = event.getSource();
    if (source == join) {
        textField.setText("/join");
    } else if (source == leave) {
        textField.setText("/leave");
    } else if (source == whisper) {
        textField.setText("/join");
    } else {
        textField.setText("/exit");
    }
}

这是假设你的按钮被命名为join,leave,whisper和exit。