Java - поймать значение кнопки в определенный момент - PullRequest
0 голосов
/ 20 января 2012

У меня есть динамическое приложение, которое должно создать интерфейс окна с флажком.Значения флажков будут контролировать следующие шаги программы.

Таким образом, у меня есть этот интерфейс с кнопкой, и я должен выбрать кнопки, которые я хочу, затем нажать кнопку «RUN» (в моментВыбор программы должен ждать).Как я могу это сделать?

(я не могу использовать серверное приложение с тегами html. Это было бы слишком просто.)

Это мой код.Проблема в том, что программа контролирует значения флажков, прежде чем я нажимаю кнопку RUN.Таким образом, все состояния кнопки приводят к значению FALSE.

public class JRadiobuttonExample extends JFrame {
private JCheckBox radioButton1;
private JCheckBox radioButton2;
private JCheckBox radioButton3;
private JLabel label;
int i, state[] =  {0,0,0,0};
JCheckBox b[]; 
static ArrayList<Boolean> check=new ArrayList<Boolean>();
JButton altervista=new JButton("RUN");
static int num;


public JCheckBox[] getB() {
    return b;
}
public void setB(JCheckBox[] b) {
    this.b = b;
}
public ArrayList<Boolean> getCheck() {
    return check;
}
public void setCheck(ArrayList<Boolean> check2) {
    check = check2;
}
public JRadiobuttonExample(int num, ArrayList<String> lbl) {
    super("JRadiobuttonExample");
    getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER));

    b= new JCheckBox[num];

    CheckBoxListener ckListener = new CheckBoxListener();

    for(i=0; i<num; i++) {
        b[i] = new JCheckBox(lbl.get(i));
        b[i].addItemListener(ckListener); 
        getContentPane().add(b[i]);
    }

    setVisible(true); 

    getContentPane().add(altervista);
    getContentPane().setVisible(true);
    Ascoltatore asc=new Ascoltatore();
    altervista.addActionListener(asc);
}

class Ascoltatore extends WindowAdapter implements ActionListener{
    public void windowClosing(WindowEvent e){

    }
    public void actionPerformed(ActionEvent e){
        if(e.getSource()==altervista){

        }
    }
}



public static void main(String argv[])
{
    ArrayList<String> col=new ArrayList<String>();

    col.add("hello");
    col.add("everyone");

    num=col.size();
    JRadiobuttonExample b = new JRadiobuttonExample(num,col);
    JCheckBox[] buttons=b.getB();

    for (JCheckBox c:buttons){
        check.add(c.isSelected());
    }

    System.out.println("checkbox values are:");
    for (boolean sel:check ){
        System.out.println(sel);
    }
}
}

1 Ответ

3 голосов
/ 20 января 2012

Вы должны показать следующий экран при нажатии кнопки «RUN». Таким образом, вы должны добавить ActionListener к этой кнопке.

Этот слушатель получит состояние всех флажков, решит, какой следующий экран показывать в зависимости от этих состояний, и покажет соответствующий следующий экран.

Вот как работают API на основе событий. Вы не ждете, чтобы что-то случилось. Вы регистрируете прослушиватель события, и этот прослушиватель вызывается при его запуске.

...