Java 基本GUI Swing-未显示组件
这是我的代码片段,其中包含childJava 基本GUI Swing-未显示组件,java,swing,jframe,Java,Swing,Jframe,这是我的代码片段,其中包含childJButton和JPanel对象,但它不起作用。而且它在Eclipse中没有显示任何编译错误 import java.awt.FlowLayout; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; i
JButton
和JPanel
对象,但它不起作用。而且它在Eclipse中没有显示任何编译错误
import java.awt.FlowLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
class gui extends JFrame implements ActionListener {
private JButton b;
private TextField c;
private JLabel l;
private String sn;
// Constructor for making framework
public gui() { setLayout(new FlowLayout());
JFrame f=new JFrame("Hello!");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
f.setSize(200,200);
f.setTitle("GUI");
b=new JButton("Click");
l=new JLabel("Enter Name");
c=new TextField("Enter..",10);
c.setEditable(true);
l.setBounds(20,20,20,20);
f.setBounds(10, 10, 10, 10);
b.addActionListener(this);
add(b);
add(f);
add(l);
add(c);
}
public static void main(String[] args) {
gui g=new gui();
g.setVisible(true);
} //main method
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("Working");
}
}
你的
JFrame f=newjframe(“你好!”)代码>是不需要的
您需要使用this
,它已经是您的JFrame
了,比如:
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setSize(200,200);
this.setTitle("GUI");
同时删除:add(f)代码>和f.setBounds(10,10,10,10)代码>你的JFrame f=newjframe(“你好!”)代码>是不需要的
您需要使用this
,它已经是您的JFrame
了,比如:
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setSize(200,200);
this.setTitle("GUI");
同时删除:add(f)代码>和f.setBounds(10,10,10,10)代码>您的类“是一个”GUI,然后您还创建了一个新的JFrame,因此您的代码中实际上有两个框架
但是,使其可见的框架没有添加任何组件,因此只能看到框架
然后尝试将组件添加到类中,该类是一个框架。但是,您会遇到两个问题:
您永远不会使此帧可见并显示
Swing使用布局管理器(您不需要使用setBounds(…)。默认情况下,它使用边界布局。在不指定约束的情况下将构件添加到框架时,构件将添加到“中心”。但是,只有一个组件可以显示在“中心”,因此只有最后添加的组件才会可见
您还存在其他问题,因为您没有在事件调度线程上创建GUI。所以要纠正的问题实在太多了
我建议您阅读上Swing教程中的部分,了解如何创建简单GUI的工作示例。然后修改代码。您的类“是一个”GUI,然后您还创建了一个新的JFrame,因此您的代码中实际上有两个框架
但是,使其可见的框架没有添加任何组件,因此只能看到框架
然后尝试将组件添加到类中,该类是一个框架。但是,您会遇到两个问题:
您永远不会使此帧可见并显示
Swing使用布局管理器(您不需要使用setBounds(…)。默认情况下,它使用边界布局。在不指定约束的情况下将构件添加到框架时,构件将添加到“中心”。但是,只有一个组件可以显示在“中心”,因此只有最后添加的组件才会可见
您还存在其他问题,因为您没有在事件调度线程上创建GUI。所以要纠正的问题实在太多了
我建议您阅读上Swing教程中的部分,了解如何创建简单GUI的工作示例。然后修改该代码。因为您已经扩展了JFrame
,所以不必创建新的JFrame
因为现在你的类本身就是一个JFrame。这意味着您可以使用this
替换f
-JFrame的所有用法:
这样,也可以正确添加其他组件。因为现在你把b,f,i和c加到右边的JFrame中
所以用这个:
this.setVisible(true);
this.setSize(200,200);
this.setTitle("GUI");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
或者更简单:
setVisible(true);
setSize(200,200);
setTitle("GUI");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
因为您已经扩展了JFrame
,所以不必创建新的JFrame
因为现在你的类本身就是一个JFrame。这意味着您可以使用this
替换f
-JFrame的所有用法:
这样,也可以正确添加其他组件。因为现在你把b,f,i和c加到右边的JFrame中
所以用这个:
this.setVisible(true);
this.setSize(200,200);
this.setTitle("GUI");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
或者更简单:
setVisible(true);
setSize(200,200);
setTitle("GUI");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
“不工作”是什么意思?它是如何工作的?Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作。因此,它们不利于像素完美布局。而是使用布局管理器,或者与布局填充和边框一起使用。你说的“不工作”是什么意思?它是如何工作的?Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作。因此,它们不利于像素完美布局。请改用布局管理器,或与布局填充和边框一起使用。谢谢@camcikr为什么我的Jlabel和Jtextfield不工作,只有jbutton在工作?@M.UsmanSiddiqui,我已经解释过了。请阅读我对BorderLayout的评论!!!阅读本教程,了解更好的代码结构方法。从一个工作示例开始!谢谢#camcikr@camcikr为什么我的Jlabel和Jtextfield不工作,只有jbutton在工作?@M.UsmanSiddiqui,我已经解释过了。请阅读我对BorderLayout的评论!!!阅读本教程,了解更好的代码结构方法。从一个工作示例开始!但是为什么我的Jlabel和Jtextfield不工作只有jbutton在工作呢?别担心,伙计!我会做的,只要我的东西都能用!请尽快提供帮助。但是为什么我的Jlabel和Jtextfield不工作只有jbutton在工作?别担心,伙计!我会做的,只要我的东西都能用!请尽快帮忙。