Java swing Jframe赢得';设置为不可见(假)
我今天刚开始用JavaSwing编写代码,所以我是个新手,如果我的问题很愚蠢,我很抱歉。我在网上搜了很多遍,但什么也没找到 我的问题是我无法通过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
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
。