Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDialog中的JButton保持按下状态_Java_Multithreading_Swing_Swingworker_Jtogglebutton - Fatal编程技术网

Java JDialog中的JButton保持按下状态

Java JDialog中的JButton保持按下状态,java,multithreading,swing,swingworker,jtogglebutton,Java,Multithreading,Swing,Swingworker,Jtogglebutton,我对JDialog中的JButton有一个问题,代码是: package asdasd; import java.awt.Dialog; import javax.swing.JDialog; import javax.swing.SwingWorker; class F extends javax.swing.JFrame { /** * Creates new form F */ public F() { initComponents(); } /

我对JDialog中的JButton有一个问题,代码是:

package asdasd;

import java.awt.Dialog;
import javax.swing.JDialog;
import javax.swing.SwingWorker;

class F extends javax.swing.JFrame {  

/** 
 * Creates new form F 
 */  
public F() {  
    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() {  
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    java.awt.GridBagConstraints gridBagConstraints;  

    dial = new javax.swing.JDialog();  
    jLabel2 = new javax.swing.JLabel();  
    jToggleButton2 = new javax.swing.JToggleButton();  
    jLabel1 = new javax.swing.JLabel();  
    jToggleButton1 = new javax.swing.JToggleButton();  

    dial.getContentPane().setLayout(new java.awt.GridBagLayout());  

    jLabel2.setText("jLabel2");  
    dial.getContentPane().add(jLabel2, new java.awt.GridBagConstraints());  

    jToggleButton2.setText("jToggleButton2");  
    gridBagConstraints = new java.awt.GridBagConstraints();  
    gridBagConstraints.gridx = 0;  
    gridBagConstraints.gridy = 1;  
    dial.getContentPane().add(jToggleButton2, gridBagConstraints);  

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);  

    jLabel1.setText("Label");  

    jToggleButton1.setText("Push");  
    jToggleButton1.addActionListener(new java.awt.event.ActionListener() {  
        public void actionPerformed(java.awt.event.ActionEvent evt) {  
            jToggleButton1ActionPerformed(evt);  
        }  
    });  

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());  
    getContentPane().setLayout(layout);  
    layout.setHorizontalGroup(  
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
        .addGroup(layout.createSequentialGroup()  
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
                .addGroup(layout.createSequentialGroup()  
                    .addGap(161, 161, 161)  
                    .addComponent(jLabel1))  
                .addGroup(layout.createSequentialGroup()  
                    .addGap(153, 153, 153)  
                    .addComponent(jToggleButton1)))  
            .addContainerGap(184, Short.MAX_VALUE))  
    );  
    layout.setVerticalGroup(  
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
        .addGroup(layout.createSequentialGroup()  
            .addGap(69, 69, 69)  
            .addComponent(jLabel1)  
            .addGap(44, 44, 44)  
            .addComponent(jToggleButton1)  
            .addContainerGap(150, Short.MAX_VALUE))  
    );  

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

private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                                 
    // TODO add your handling code here:  
    SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {  

        @Override  
        protected Void doInBackground() throws Exception { 

            dial.setVisible(true);  
            dial.setSize(300, 200);  
            dial.setDefaultCloseOperation(EXIT_ON_CLOSE);  
            return null;  
        }  
    };  

    worker.execute();  

}                                                

/** 
 * @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 {  
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {  
            if ("Nimbus".equals(info.getName())) {  
                javax.swing.UIManager.setLookAndFeel(info.getClassName());  
                break;  
            }  
        }  
    } catch (ClassNotFoundException ex) {  
        java.util.logging.Logger.getLogger(F.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);  
    } catch (InstantiationException ex) {  
        java.util.logging.Logger.getLogger(F.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);  
    } catch (IllegalAccessException ex) {  
        java.util.logging.Logger.getLogger(F.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);  
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {  
        java.util.logging.Logger.getLogger(F.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 F().setVisible(true);  
        }  
    });  
}  
// Variables declaration - do not modify                       
private javax.swing.JDialog dial;  
private javax.swing.JLabel jLabel1;  
private javax.swing.JLabel jLabel2;  
private javax.swing.JToggleButton jToggleButton1;  
private javax.swing.JToggleButton jToggleButton2;  
// End of variables declaration                     
} 
包asdasd;
导入java.awt.Dialog;
导入javax.swing.JDialog;
导入javax.swing.SwingWorker;
类F扩展了javax.swing.JFrame{
/** 
*创建新的表单F
*/  
公共F(){
初始化组件();
}  
/** 
*从构造函数中调用此方法来初始化表单。
*警告:不要修改此代码。此方法的内容始终为
*由表单编辑器重新生成。
*/  
@抑制警告(“未选中”)
//                             
私有void initComponents(){
setDefaultCloseOperation(关闭时退出);
setLocationRelativeTo(空);
java.awt.GridBagConstraints GridBagConstraints;
dial=newjavax.swing.JDialog();
jLabel2=newjavax.swing.JLabel();
jToggleButton2=newjavax.swing.JToggleButton();
jLabel1=newjavax.swing.JLabel();
jToggleButton1=newjavax.swing.JToggleButton();
dial.getContentPane().setLayout(新java.awt.GridBagLayout());
jLabel2.setText(“jLabel2”);
dial.getContentPane().add(jLabel2,new java.awt.GridBagConstraints());
setText(“jToggleButton2”);
gridBagConstraints=new java.awt.gridBagConstraints();
gridBagConstraints.gridx=0;
gridBagConstraints.gridy=1;
dial.getContentPane().add(jToggleButton2,gridBagConstraints);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText(“标签”);
jToggleButton1.setText(“推”);
jToggleButton1.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jToggleButton1ActionExecuted(evt);
}  
});  
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
布局。setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(161161161)
.addComponent(jLabel1))
.addGroup(layout.createSequentialGroup()
.addGap(153153153)
.addComponent(jToggleButton1)))
.addContainerGap(184,简称最大值))
);  
布局。setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(69,69,69)
.addComponent(jLabel1)
.addGap(44,44,44)
.addComponent(jToggleButton1)
.addContainerGap(150,简称最大值))
);  
包装();
}//                           
私有void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
SwingWorker worker=新SwingWorker(){
@凌驾
受保护的Void doInBackground()引发异常{
拨号设置可见(真);
刻度盘设置尺寸(300200);
拨号设置默认关闭操作(关闭时退出);
返回null;
}  
};  
worker.execute();
}                                                
/** 
*@param指定命令行参数
*/  
公共静态void main(字符串args[]){
/*设置Nimbus外观和感觉*/
//  
/*如果Nimbus(在JavaSE6中引入)不可用,请使用默认的外观。
*详情请参阅http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html  
*/  
试试{
对于(javax.swing.UIManager.LookAndFeelInfo:javax.swing.UIManager.getInstalledLookAndFeels()){
如果(“Nimbus”.equals(info.getName()){
setLookAndFeel(info.getClassName());
打破
}  
}  
}catch(ClassNotFoundException ex){
getLogger(F.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}catch(实例化异常ex){
getLogger(F.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}捕获(非法访问例外){
getLogger(F.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}catch(javax.swing.UnsupportedLookAndFeelException ex){
getLogger(F.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}  
//  
/*创建并显示表单*/
java.awt.EventQueue.invokeLater(新的Runnable(){
public void run(){
新的F().setVisible(true);
}  
});  
}  
//变量声明-不修改
私有javax.swing.JDialog拨号;
私有javax.swing.JLabel jLabel1;
私有javax.swing.JLabel jLabel2;
私有javax.swing.JToggleButton jToggleButton1;
私有javax.swing.JToggleButton jToggleButton2;
//变量结束声明
} 

释放鼠标按钮后,为了使按钮进入JDialog,我必须做什么来解除按钮的按下?

可能是因为您使用的是JToggleButton

切换按钮允许用户在两种状态之间更改设置。
您应该尝试使用JButton来代替。

hmmm请使用与您正在使用的
JToggleButton
对象相同的问题来回答这个问题,除非您再次单击这些对象或调用
setSelected(false)
,否则这些对象将保持按下状态。你确定那是你需要的东西吗?否则,您可能需要一个
JButton