如何记住从其他框架检查复选框

时间:2014-07-11 04:00:46

标签: java swing jframe multiple-instances jcheckbox

我有两个jframe,一个是用于调用复选框框架的主框架,另一个是包含复选框的jframe。

MainFrame.java

enter image description here

在主框架再次调用复选框后,如何记住先前选中的复选框?

CheckBox.java

enter image description here

下面是我的按钮操作代码:

private void btn_callCheckBoxActionPerformed(
  java.awt.event.ActionEvent evt) {                                         

    //call checkbox window
    CheckBoxWindow cbw = new CheckBoxWindow();
    cbw.setVisible(true);
    cbw.setEnabled(true);

    this.setVisible(true);
    this.setEnabled(false);

}    

从复选框框架

调用主机
private void btn_callMainFrameActionPerformed(
  java.awt.event.ActionEvent evt) {                                         

    //call main frame window
    MainPage mp = new MainPage();
    mp.setVisible(true);
    mp.setEnabled(true);
    this.setEnabled(false);
    this.setVisible(false);
}

3 个答案:

答案 0 :(得分:2)

你有多种选择。

1-每次单击按钮时都不要创建新窗口。将窗口保存在变量中,然后使用setVisible(true)setVisible(false)来显示/隐藏它们。如果您隐藏复选框并再次显示,则复选框将处于关闭前的状态。

这样的事情

 public MainPage() {
     this.checkWindow = new CheckWindow()
 }

 private void btn_callCheckBoxActionPerformed(java.awt.event.ActionEvent evt)  {                                         
        // show window
        this.checkWindow.setVisible(true);
        this.checkWindow.setEnabled(true);

        this.setVisible(true);
        this.setEnabled(false);
  }  

2.-使用java的preferences api

保存并检索复选框的值

答案 1 :(得分:1)

这是一种做你想做的事情的方法:

在CheckBoxWindow中创建一个方法,该方法将返回选择的布尔值

private boolean chck1=false;
private boolean chck2=false;

public boolean getCheckBoxOneState(){
    return chck1;
}
private void btn_callMainFrameActionPerformed(java.awt.event.ActionEvent evt) {                                         
    chck1 = jCheckBox1.isSelected();
    chck2 = jCheckBox2.isSelected();
//call main frame window
MainPage mp = new MainPage();
mp.setVisible(true);
mp.setEnabled(true);
this.setEnabled(false);
this.setVisible(false);}

然后在你的MainPage实例中另一个框架调用返回复选框值的方法

boolean chck1State = new CheckBoxWindow().getCheckBoxOne();

答案 2 :(得分:0)

感谢您的帮助。没有你们,你无法解决它。我成功了。我只需隐藏窗口,避免在单击按钮时创建新窗口。

\*
 *From Class MainFrame
 */
public MainFrame(){

this.CheckBox = new CheckBox(this);
}

//button action to show checkbox frame
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){

CheckBox.setVisible(true);
}

\***********************************************************************\

\*
* From class CheckBox
\*

public CheckBox(JFrame mainFrame) {
this.MainFrame = MainFrame;
}

//button action to show MainFrame frame
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
MainFrame.setVisible();
}