在JTabbedPane中简单禁用JPanel

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的状态,启用或禁用!(我想)我真的无法弄清楚这里有什么问题.感谢您的时间.

Mad*_*tha 6

我认为问题是

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)

  • 要了解其中的差异,但我同意这一评估...... +1 (2认同)
  • 仅供参考,逻辑可以简化为2行:(1)`allowNavigation =!allowNavigation;`然后(2)`jTabbedPane1.setEnabledAt(0,allowNavigation);` (2认同)