我有两个jframe,一个是用于调用复选框框架的主框架,另一个是包含复选框的jframe。
MainFrame.java
在主框架再次调用复选框后,如何记住先前选中的复选框?
CheckBox.java
下面是我的按钮操作代码:
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);
}
答案 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();
}