对于学校,我必须在一个按钮和两个文本区域内制作一个JFrame。无论你在Textfield中放置什么,当按下按钮时,必须进入文本字段2。当我运行程序时,我得到了代码,我应该看到textfields和按钮。无论出于何种原因,它都没有。
我到目前为止:
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);
}
}
我还不允许发布图片,但我会提供图片的链接here
如果这个问题已经出现,我很抱歉,但我找不到类似的问题。 我是编程新手,所以当我忘记某些内容或写错了内容时,请不要对我大喊大叫!
答案 0 :(得分:7)
这里我稍微修改了你的代码,但是以类似的方式做了。
除非我不想做一些有创意的事情,否则我不会延长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);
}
}
此外,您还可以使用panel
扩展JPanel
课程:
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);
}
}
答案 1 :(得分:4)
您声明了一个名为panel
的类,您没有在任何地方使用它。请更换bwlow线:
JPanel panel = new JPanel();
使用:
SomePanel panel = new SomePanel();
然后,您的班级panel
变为SomePanel
,以遵循正确的班级命名。
一些帮助你的想法:
FlowLayout
。答案 2 :(得分:4)
这是因为您的班级名称是panel
而不是JPanel
修改:
panel panel = new panel();
frame.setContentPane(panel);
frame.setVisible(true);
你应该尝试使用不太混乱的类的名称,并尝试用大写声明它们。
示例:
Class Panel extends JPanel {}
对象:
Panel panel = new Panel()
在这里你可以清楚地看到哪一个是类名,哪个是该类的对象(该类的实例)。