按钮和文本字段不会显示在Java中
对于学校,我必须在一个按钮和两个文本区域内制作一个JFrame。 无论你在Textfield中放置什么,按下按钮时都必须进入textfield 2。 当我运行程序时,我得到了代码,我应该看到文本字段和按钮。 无论出于何种原因,它都没有。
我到目前为止:
package helloworld; import javax.swing.*; import java.awt.event.*; public class HelloWorld extends JFrame { public static void main(String[] args) { JFrame frame = new HelloWorld(); frame.setSize(400, 400); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setTitle("Hello World Button App"); JPanel panel = new JPanel(); frame.setContentPane(panel); fram.setVisible(true); } } class panel extends JPanel { public JButton btn1 = new JButton("Klick!"); public JTextField txt1 = new JTextField(10); public JTextField txt2 = new JTextField(10); public panel() { add(btn1); add(txt1); add(txt2); } }
我还不能发布图片,但我会在这里提供图片的链接
如果这个问题已经出现,我很抱歉,但我找不到类似的问题。 我是编程的新手,所以当我忘记某些内容或写错了内容时,请不要对我大喊大叫!
在这里,我已经修改了一些代码,但是以类似的方式进行了修改。 除非我不想做一些有创意的事情,否则我不会扩展JFrame
,但你总是可以。
你已经扩展了JFrame
,所以没有值得用frame.foo()
调用方法但只是foo()
和最重要的JFrame frame = new HelloWorld()
,如果你已经使用JFrame
扩展了类,那就没有意义了:
import javax.swing.*; public class HelloWorld extends JFrame{ public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new HelloWorld().setVisible(true); } }); } public HelloWorld() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("Hello World Button App"); panel pan= new panel(); add(pan.panel); pack(); setVisible(true); } } class panel { private JButton btn1 = new JButton("Klick!"); private JTextField txt1 = new JTextField(10); private JTextField txt2 = new JTextField(10); JPanel panel; public panel() { panel = new JPanel(); panel.add(btn1); panel.add(txt1); panel.add(txt2); } }
此外,您还可以使用JPanel
扩展您的panel
类:
public HelloWorld() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("Hello World Button App"); panel pan= new panel(); add(pan); pack(); setVisible(true); } } class panel extends JPanel { private JButton btn1 = new JButton("Klick!"); private JTextField txt1 = new JTextField(10); private JTextField txt2 = new JTextField(10); public panel() { add(btn1); add(txt1); add(txt2); } }
那是因为你的类名是panel
而不是JPanel
修改这个:
panel panel = new panel(); frame.setContentPane(panel); frame.setVisible(true);
您应该尝试使用不太混乱的类的名称,并尝试使用大写声明它们。
例:
Class Panel extends JPanel {}
宾语:
Panel panel = new Panel()
在这里,您可以清楚地读取哪个是类名,哪个是该类的对象(该类的实例)。
您声明了一个名为panel
的类,您没有在任何地方使用它。 请更换线路bwlow:
JPanel panel = new JPanel();
有:
SomePanel panel = new SomePanel();
然后,您的类panel
变为SomePanel
以遵循正确的类命名。
一些想法可以帮助你:
- 按照Java样式命名您的类
- 不要使用公共字段
- 在面板上设置布局。 这次它适用于您,因为默认值为
FlowLayout
。