Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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 swing Jframe赢得';设置为不可见(假)_Java_Swing_Jframe - Fatal编程技术网

Java swing Jframe赢得';设置为不可见(假)

Java swing Jframe赢得';设置为不可见(假),java,swing,jframe,Java,Swing,Jframe,我今天刚开始用JavaSwing编写代码,所以我是个新手,如果我的问题很愚蠢,我很抱歉。我在网上搜了很多遍,但什么也没找到 我的问题是我无法通过setVisible(false)使Jfraim不可见 代码非常简单。一个只有一个按钮的窗口,点击后将显示一个showMessageDialog“Hello World”,我希望该窗口在此之后不可见 这是我的密码: import javax.swing.*; import java.awt.event.ActionEvent; import java.a

我今天刚开始用JavaSwing编写代码,所以我是个新手,如果我的问题很愚蠢,我很抱歉。我在网上搜了很多遍,但什么也没找到

我的问题是我无法通过
setVisible(false)
使Jfraim不可见

代码非常简单。一个只有一个按钮的窗口,点击后将显示一个
showMessageDialog
“Hello World”,我希望该窗口在此之后不可见

这是我的密码:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Temp extends JFrame{
    private JPanel panel1;
    private JButton button1;

    private Temp() {
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setVisible(false);
                JOptionPane.showMessageDialog(null, "Hello World");
            }
        });
    }


    public static void main(String[] args) {
        JFrame tempWindow = new JFrame("TempWindow");
        tempWindow.setContentPane(new Temp().panel1);
        tempWindow.setLocationRelativeTo(null); // this line set the window in the center of the screen
        tempWindow.setDefaultCloseOperation(tempWindow.EXIT_ON_CLOSE);
        tempWindow.pack();
        tempWindow.setVisible(true);

    }

}
我不知道我做错了什么。我做的每件事都像这样,但我的窗口不会在点击按钮后变得不可见

任何帮助都将不胜感激。

试试这个

import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类临时工{
私人JPanel小组1;
私人按钮1;
JFrame tempWindow=新JFrame(“tempWindow”);
私人临时雇员(){
button1=新的JButton(“按钮”);
tempWindow.add(按钮1);
button1.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
tempWindow.setVisible(false);
showMessageDialog(null,“Hello World”);
}
});
}
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(()->new Temp().start());
}
公开作废开始(){
setLocationRelativeTo(null);//此行在
//屏幕中央
setPreferredSize(新维度(500500));
tempWindow.setDefaultCloseOperation(tempWindow.EXIT_ON_CLOSE);
tempWindow.pack();
tempWindow.setLocationRelativeTo(null);//在屏幕上居中显示
tempWindow.setVisible(true);
}
}
  • 我删除了面板,因为没有必要演示 解决方案
  • 我还创建了一个按钮,因为你没有
  • 扩展JFrame也被认为是不好的做法。最好是 扩展JPanel并在JFrame实例中放置一个实例。但如果你不打算重写某些东西,最好是选择组合而不是继承
    • 试试这个

      import java.awt.*;
      导入java.awt.event.*;
      导入javax.swing.*;
      公共类临时工{
      私人JPanel小组1;
      私人按钮1;
      JFrame tempWindow=新JFrame(“tempWindow”);
      私人临时雇员(){
      button1=新的JButton(“按钮”);
      tempWindow.add(按钮1);
      button1.addActionListener(新ActionListener(){
      @凌驾
      已执行的公共无效操作(操作事件e){
      tempWindow.setVisible(false);
      showMessageDialog(null,“Hello World”);
      }
      });
      }
      公共静态void main(字符串[]args){
      SwingUtilities.invokeLater(()->new Temp().start());
      }
      公开作废开始(){
      setLocationRelativeTo(null);//此行在
      //屏幕中央
      setPreferredSize(新维度(500500));
      tempWindow.setDefaultCloseOperation(tempWindow.EXIT_ON_CLOSE);
      tempWindow.pack();
      tempWindow.setLocationRelativeTo(null);//在屏幕上居中显示
      tempWindow.setVisible(true);
      }
      }
      
      • 我删除了面板,因为没有必要演示 解决方案
      • 我还创建了一个按钮,因为你没有
      • 扩展JFrame也被认为是不好的做法。最好是 扩展JPanel并在JFrame实例中放置一个实例。但如果你不打算重写某些东西,最好是选择组合而不是继承

      给定的代码甚至不会运行。您从不启动
      panel1
      button1
      ,因此NPE将被抛出。@GeorgeZ。但它在为我奔跑。我使用IntelliJGUI表单,这是否会产生效果?首先,不要扩展JFrame,因为您已经在main中创建了一个JFrame(这可能是您的问题的一部分)。在哪里创建按钮?试着以java程序的形式运行,它不会以@geogez的形式运行。说。我建议搜索一些示例代码并尝试运行它们。请参阅(错误)。您应该使用
      JDialogs
      CardLayout
      。给定的代码甚至不会运行。您从不启动
      panel1
      button1
      ,因此NPE将被抛出。@GeorgeZ。但它在为我奔跑。我使用IntelliJGUI表单,这是否会产生效果?首先,不要扩展JFrame,因为您已经在main中创建了一个JFrame(这可能是您的问题的一部分)。在哪里创建按钮?试着以java程序的形式运行,它不会以@geogez的形式运行。说。我建议搜索一些示例代码并尝试运行它们。请参阅(错误)。您应该使用
      JDialogs
      CardLayout