为什么在Java中这个简单的Swing代码中不显示按钮?
我这里有非常简单的Java swing代码,我没有看到框架中显示的按钮。 有人能帮忙排除故障吗为什么在Java中这个简单的Swing代码中不显示按钮?,java,swing,button,jframe,Java,Swing,Button,Jframe,我这里有非常简单的Java swing代码,我没有看到框架中显示的按钮。 有人能帮忙排除故障吗 import javax.swing.*; import java.awt.event.*; public class HangmanGUI extends JFrame{ JComboBox favoriteShows; JButton[] alphaButtons; String infoOnComponent = ""; JB
import javax.swing.*;
import java.awt.event.*;
public class HangmanGUI extends JFrame{
JComboBox favoriteShows;
JButton[] alphaButtons;
String infoOnComponent = "";
JButton button1;
public static void main(String[] args){
new HangmanGUI();
}
//constructor for Hangman
/**
* Instantiates a new hangman gui.
*/
public HangmanGUI() {
this.setSize(600,400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Play Hangman");
JPanel thePanel = new JPanel();
button1 = new JButton("Get Answer");
thePanel.add(button1);
this.setVisible(true);
}
}
您从未将面板添加到框架中
public HangmanGUI() {
this.setSize(600,400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Play Hangman");
JPanel thePanel = new JPanel();
button1 = new JButton("Get Answer");
thePanel.add(button1);
// This is very important ;)
add(thePanel);
this.setVisible(true);
}
就个人而言,我会避免像这样从JFrame
目录进行扩展。除了您没有向框架添加任何功能之外,它还将您绑定到单个部署/使用
我会从一个像
JPanel
的东西开始,然后从那里构建程序,将这个面板添加到JFrame
在“main”条目类中创建的一个实例中…IMHO您永远不会将面板添加到框架中
public HangmanGUI() {
this.setSize(600,400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Play Hangman");
JPanel thePanel = new JPanel();
button1 = new JButton("Get Answer");
thePanel.add(button1);
// This is very important ;)
add(thePanel);
this.setVisible(true);
}
就个人而言,我会避免像这样从JFrame
目录进行扩展。除了您没有向框架添加任何功能之外,它还将您绑定到单个部署/使用
我会从JPanel
这样的东西开始,然后从那里构建程序,将此面板添加到JFrame
在“main”entry类中创建的实例中…IMHO我真蠢。谢谢!,顺便问一下,你为什么建议不要像上面那样扩展JFrame
?你能用代码来说明不扩展JFrame
的意思吗?@user1988876,原因有很多。如果您想使用该组件,该怎么办?不能将顶级容器添加到其他容器。如果您希望在另一个项目中包含该组件或以其他方式重新部署它(例如在小程序上),该怎么办?你也没有给框架添加任何新的功能,所以它通常被认为是一种浪费…@ UsRe80876而不是做<代码>公共类Hangman GUI扩展jFrase,你应该考虑使用<代码>公共类Hangman GUI扩展JPAND{
相反。这意味着您将需要创建一个JFrame
的实例,但这是一个小小的妥协…在创建了一个JFrame实例之后,我如何将Jpanel附加到框架上?在构造函数中?我太傻了。谢谢!顺便问一下,为什么您不建议像上面那样扩展JFrame?您能从中看出吗编码您不扩展JFrame的意思是什么?@user1988876有很多原因。如果您想使用该组件该怎么办?您不能将顶级容器添加到其他容器中。如果您想在另一个项目中包含该组件或以其他方式重新部署它(例如在小程序上),该怎么办您也没有向框架添加任何新的功能,因此它通常被认为是一种浪费…@ USER 1988 876而不是做<代码>公共类Hangman GUI扩展jFrase,您应该考虑使用<代码>公共类Hangman GUI扩展JPAND{相反。这意味着您需要创建一个JFrame
的实例,但这是一个小小的妥协…在创建一个JFrame实例之后,我如何将Jpanel附加到框架?在构造函数本身中?