agi*_*lla 2 java swing boolean-logic boolean
所以我一直试图使用一个简单的布尔值来禁用/启用jTabbedPane(在Netbeans上)中的jPanel,并且boolean总是卡在false上.单击按钮可触发jTabbedPane中jPanel的禁用/启用.以下是我的代码的摘录:
package programming.club;
/**
*
* @author RandomGuy
*/
public class GranadaProgrammingClubUI extends javax.swing.JFrame {
public static boolean allowNavigation = true;
/**
* Creates new form ProgrammingClubUI
*/
public ProgrammingClubUI() {
initComponents();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (allowNavigation == false) {
jTabbedPane1.setEnabledAt(0, true);
allowNavigation = true;
}
if (allowNavigation == true) {
jTabbedPane1.setEnabledAt(0, false);
allowNavigation = false;
}
System.out.println(allowNavigation);
}
Run Code Online (Sandbox Code Playgroud)
我把System.out.println(allowNavigation); 只是为了检查allowNavigation的值是什么,每次单击按钮时,值都保持为false,但它应该是切换,并且更改jPanel的状态,启用或禁用!(我想)我真的无法弄清楚这里有什么问题.感谢您的时间.
我认为问题是
if (allowNavigation == false) {
jTabbedPane1.setEnabledAt(0, true);
allowNavigation = true;
}
if (allowNavigation == true) {
jTabbedPane1.setEnabledAt(0, false);
allowNavigation = false;
}
Run Code Online (Sandbox Code Playgroud)
你应该使用
if (allowNavigation == false) {
jTabbedPane1.setEnabledAt(0, true);
allowNavigation = true;
}
else if (allowNavigation == true) {
jTabbedPane1.setEnabledAt(0, false);
allowNavigation = false;
}
Run Code Online (Sandbox Code Playgroud)
因为如果allownavigation为false,它将首先转到if并使其成为真,然后转到第二个if并使其为false
还有很好的布尔检查
if (!allowNavigation) {
jTabbedPane1.setEnabledAt(0, true);
allowNavigation = true;
}
else if (allowNavigation) {
jTabbedPane1.setEnabledAt(0, false);
allowNavigation = false;
}
Run Code Online (Sandbox Code Playgroud)