Java 无法使用setVisible(布尔值true/false)隐藏JFrame;

Java 无法使用setVisible(布尔值true/false)隐藏JFrame;,java,swing,user-interface,jframe,Java,Swing,User Interface,Jframe,我正在使用Netbeans Swing Gui构建器 我创建了一个简单的菜单,我想在按下热键时显示/消失 以下是菜单的代码: package overlay; import java.util.Properties; import javax.swing.JOptionPane; import static overlay.Overlay.flags; public class Menu extends javax.swing.JFrame { static boolean isVisib

我正在使用Netbeans Swing Gui构建器

我创建了一个简单的菜单,我想在按下热键时显示/消失

以下是菜单的代码:

package overlay;

import java.util.Properties;
import javax.swing.JOptionPane;
import static overlay.Overlay.flags;

public class Menu extends javax.swing.JFrame {

static boolean isVisible = true;

/**
 * Creates new form Menu
 */
public Menu() {
    initComponents();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jSeparator4 = new javax.swing.JSeparator();
    jPanel1 = new javax.swing.JPanel();
    jLabel3 = new javax.swing.JLabel();
    jSeparator1 = new javax.swing.JSeparator();
    jLabel1 = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();
    jSeparator2 = new javax.swing.JSeparator();
    jSeparator3 = new javax.swing.JSeparator();
    jSeparator5 = new javax.swing.JSeparator();
    jCheckBox1 = new javax.swing.JCheckBox();
    jCheckBox2 = new javax.swing.JCheckBox();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setUndecorated(true);
    setOpacity(0.9F);
    setResizable(false);
    setType(java.awt.Window.Type.POPUP);

    jLabel3.setFont(new java.awt.Font("Arial", 1, 24)); // NOI18N
    jLabel3.setText("Foo");

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 204, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
            .addGap(0, 11, Short.MAX_VALUE)
            .addComponent(jLabel3))
    );

    jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL);

    jLabel1.setFont(new java.awt.Font("Arial", 1, 24)); // NOI18N
    jLabel1.setText("Foo");

    jLabel2.setFont(new java.awt.Font("Arial", 1, 24)); // NOI18N
    jLabel2.setText("Foo");

    jSeparator3.setOrientation(javax.swing.SwingConstants.VERTICAL);

    jCheckBox1.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
    jCheckBox1.setText("Foo");
    jCheckBox1.setActionCommand("JFoo");
    jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jCheckBox1ActionPerformed(evt);
        }
    });

    jCheckBox2.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
    jCheckBox2.setText("Foo");
    jCheckBox2.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jCheckBox2ActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jCheckBox2))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 280, Short.MAX_VALUE)
                            .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(layout.createSequentialGroup()
                            .addGap(0, 0, Short.MAX_VALUE)
                            .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jCheckBox1))
                    .addGap(261, 261, 261))
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addComponent(jSeparator2)
                    .addContainerGap())
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addComponent(jSeparator5)
                    .addContainerGap())))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addComponent(jSeparator5, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(2, 2, 2)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jLabel2)
                        .addComponent(jLabel1))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jCheckBox1)
                        .addComponent(jCheckBox2))
                    .addGap(0, 104, Short.MAX_VALUE))
                .addComponent(jSeparator1))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap())
    );

    jCheckBox1.getAccessibleContext().setAccessibleName("JFooB");

    pack();
}// </editor-fold>                        

private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    // TODO add your handling code here: Foo
    Overlay.Foo = !Overlay.Foo;
}                                          

private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    // TODO add your handling code here: //Foo1
    Overlay.Foo1 = !Overlay.Foo1;
}                                          

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */

    try {
        Properties props = new Properties();
        props.put("windowDecoration", "off");
        props.put("textAntiAliasing", "on");
        props.put("backgroundPattern", "off");
        props.put("backgroundColor", "60 63 65");
        props.put("windowBorderColor", "255 255 255");

        //   props.put("selectionForegroundColor", "255 255 255"); 
        //   props.put("selectedTexture", "255 255 255"); 
        props.put("focusColor", "60 63 65");

        com.jtattoo.plaf.hifi.HiFiLookAndFeel.setCurrentTheme(props);

        javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.hifi.HiFiLookAndFeel");

    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }

    //</editor-fold>


    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {

            new Menu().setVisible(true);

        }
    });
}

public void toggleMenu() {
    isVisible = !isVisible;

    if (isVisible) {

      setVisible(true);
        //JOptionPane.showMessageDialog(null, String.valueOf(isVisible), String.valueOf(isVisible), JOptionPane.INFORMATION_MESSAGE);
    } else {

        //JOptionPane.showMessageDialog(null, String.valueOf(isVisible), String.valueOf(isVisible), JOptionPane.INFORMATION_MESSAGE);

        setVisible(false);

        dispose();
    }
}

// Variables declaration - do not modify                     
private javax.swing.JCheckBox jCheckBox1;
private javax.swing.JCheckBox jCheckBox2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JSeparator jSeparator3;
private javax.swing.JSeparator jSeparator4;
private javax.swing.JSeparator jSeparator5;
// End of variables declaration                   
}
包覆盖;
导入java.util.Properties;
导入javax.swing.JOptionPane;
导入静态overlay.overlay.flags;
公共类菜单扩展了javax.swing.JFrame{
静态布尔值isVisible=true;
/**
*创建新的表单菜单
*/
公共菜单(){
初始化组件();
}
/**
*从构造函数中调用此方法来初始化表单。
*警告:不要修改此代码。此方法的内容始终为
*由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
//                           
私有组件(){
jSeparator4=newjavax.swing.jsepator();
jPanel1=newjavax.swing.JPanel();
jLabel3=newjavax.swing.JLabel();
jSeparator1=newjavax.swing.jsepator();
jLabel1=newjavax.swing.JLabel();
jLabel2=newjavax.swing.JLabel();
jSeparator2=newjavax.swing.jsepator();
jSeparator3=newjavax.swing.jsepator();
jSeparator5=newjavax.swing.jsepator();
JCheckBox 1=newjavax.swing.JCheckBox();
JCheckBox=newjavax.swing.JCheckBox();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
未装饰的设置(真实);
不透明度(0.9F);
可设置大小(假);
setType(java.awt.Window.Type.POPUP);
jLabel3.setFont(新的java.awt.Font(“Arial”,1,24));//NOI18N
jLabel3.setText(“Foo”);
javax.swing.GroupLayout jPanel1Layout=新的javax.swing.GroupLayout(jPanel1);
setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpanellayout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel3,javax.swing.GroupLayout.PREFERRED\u SIZE,204,javax.swing.GroupLayout.PREFERRED\u SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT\u SIZE,Short.MAX\u VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,jPanel1Layout.createSequentialGroup()
.addGap(0,11,短的最大值)
.addComponent(jLabel3))
);
setOrientation(javax.swing.SwingConstants.VERTICAL);
jLabel1.setFont(新的java.awt.Font(“Arial”,1,24));//NOI18N
jLabel1.setText(“Foo”);
jLabel2.setFont(新的java.awt.Font(“Arial”,1,24));//NOI18N
jLabel2.setText(“Foo”);
setOrientation(javax.swing.SwingConstants.VERTICAL);
jCheckBox1.setFont(新的java.awt.Font(“Arial”,1,12));//NOI18N
jCheckBox1.setText(“Foo”);
jCheckBox1.setActionCommand(“JFoo”);
jCheckBox1.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jCheckBox1ActionPerformed(evt);
}
});
jCheckBox2.setFont(新的java.awt.Font(“Arial”,1,12));//NOI18N
jCheckBox2.setText(“Foo”);
jCheckBox2.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jCheckBox2ActionPerformed(evt);
}
});
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT\u SIZE,javax.swing.GroupLayout.DEFAULT\u SIZE,Short.MAX\u值)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2,javax.swing.GroupLayout.PREFERRED\u SIZE,86,javax.swing.GroupLayout.PREFERRED\u SIZE)
.addComponent(jCheckBox2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,280,Short.MAX_值)
.addComponent(jSeparator1,javax.swing.GroupLayout.PREFERRED\u SIZE,javax.swing.GroupLayout.DEFAULT\u SIZE,javax.swing.GroupLayout.PREFERRED\u SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(0,0,短.MAX_值)
.addComponent(jSeparator3,javax.swing.GroupLayout.PREFERRED\u SIZE,javax.swing.GroupLayout.DEFAULT\u SIZE,javax.swing.GroupLayout.PREFERRED\u SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1,javax.swing.GroupLayout.PREFERRED\u SIZE,86,javax.swing.GroupLayout.PREFERRED\u SIZE)
.addComponent(jCheckBox1))
.addGap(261261261))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()
.addComponent(jSeparator2)
.addContainerGap())
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()
.addComponent(jSeparator5)
.addContainerGap()))
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
public void run() {

        new Menu().setVisible(true);

    }
  public void run() {
            m = new Menu();
            m.setVisible(true);
        }
m.setVisible(true);