我需要在复选框中添加监听器,并在textArea中显示选择的更改

时间:2013-04-14 14:25:56

标签: java swing jtextarea

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class JDorm implements ItemListener{

public static void main(String[] args){

    JCheckBox privateroom = new JCheckBox("Private Room",false);
    JCheckBox interweb = new JCheckBox("Internet Connection",false);
    JCheckBox cable = new JCheckBox("Cable TV connection",false);
    JCheckBox fridg = new JCheckBox("Refridgerator",false);
    JCheckBox microwave = new JCheckBox("Microwave",false);
    JCheckBox soon = new JCheckBox(",and so on",false);
    JLabel greet = new JLabel("Please choose ammenities");
    String sel = "Your selected options";

    JTextArea textBox = new JTextArea(sel,0,1);
    cable.addItemListener();

    JFrame dormFrame = new JFrame("Dorm Options");// creates frame with title
    final int WIDTH = 250;
    final int HEIGHT = 500;
    dormFrame.setSize(WIDTH, HEIGHT);// sets the size of frame in pixels
    dormFrame.setVisible(true);// note: default visibility is false
    dormFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    dormFrame.setLayout(new FlowLayout());
    dormFrame.add(greet);
    dormFrame.add(microwave);
    dormFrame.add(fridg);
    dormFrame.add(cable);
    dormFrame.add(interweb);
    dormFrame.add(privateroom);
    dormFrame.add(soon);
    dormFrame.add(textBox);
}
public void itemStateChanged(ItemEvent event){
    Object source = event.getSource();
    int select = event.getStateChange();
}

}

这就是我到目前为止所知道的,我知道我需要听众,并且在选中并取消选中选项时会在框中显示一条消息。 我是否需要if语句进行更改?

2 个答案:

答案 0 :(得分:2)

创建一个可以添加到所有复选框的通用侦听器。类似的东西:

ItemListener listener = new ItemListener()
{
    public void itemStateChanged(ItemEvent event)
    {
        JCheckBox checkBox = (JCheckBox)event.getSource();
        textBox.setText( checkBox.getText() );
    }
};

然后将侦听器添加到每个复选框:

privateRoom.addItemListener( listener );
interweb.addItemListener( listener );

答案 1 :(得分:0)

我尝试过一个Checkbox,你也可以做其他类似的

 final JCheckBox privateroom = new JCheckBox("Private Room",false);

现在将项目监听器添加到checkbox privateroom以及您希望发生的操作,即

 privateroom.addItemListener(new ItemListener()
    {
        public void itemStateChanged(ItemEvent event)
        {
            if (event.getItemSelectable() == privateroom)
                textBox.setText("Private Room");
        }
    });

我之所以宣布Checkbox privaterroom为final是因为privaterroom是本地的,并且是从内部类访问的。

还有一件事,我不知道你编写程序的方式是好是坏,因为我也在学习摇摆,是一个新手。但我编写程序的方式有以下结构

class MyClass extends JFrame implements LISTENER_NAME
{
    // Components declared here

    // constructor starts
    public MyClass()
    {
        //Componenets instantiated 
        // add listeners to appropriate components
        // setVisible(), setDefaultCloseOperation(),setSize() etc called

    }

    // listener interface methods here like

    public void itemStateChanged(ItemEvent ie)
    {
        ................
    }

    // main method
    public static void main(String[] args)
    {
        new MyClass();
    }
} // class over

这样我从未遇到过final关键字等问题。我希望有专家能指导我们。