Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JButton未正确显示:Eclipse_Java_Eclipse_Swing_Jbutton - Fatal编程技术网

Java JButton未正确显示:Eclipse

Java JButton未正确显示:Eclipse,java,eclipse,swing,jbutton,Java,Eclipse,Swing,Jbutton,您可以在上图中看到代码和输出。我已经将EclipseIDE用于JavaSwing。但是按钮并没有如预期的那样来。我对JavaSwing和Eclipse都是新手,所以我不知道是否需要其他设置。请帮助我并提前感谢。问题可能是您面板的布局管理器,(如果您不使用面板,则应使用面板直接添加对象而不是框架),如果您使用布局管理器,则会遵循一些规则在面板中定位对象。喜欢将布局管理器设置为null,虽然idk y的人不喜欢你说布局管理器为null,但是如果你想使用绝对位置,请设置布局(null);可以工作你在问


您可以在上图中看到代码和输出。我已经将EclipseIDE用于JavaSwing。但是按钮并没有如预期的那样来。我对JavaSwing和Eclipse都是新手,所以我不知道是否需要其他设置。请帮助我并提前感谢。

问题可能是您面板的布局管理器,(如果您不使用面板,则应使用面板直接添加对象而不是框架),如果您使用布局管理器,则会遵循一些规则在面板中定位对象。喜欢将布局管理器设置为null,虽然idk y的人不喜欢你说布局管理器为null,但是如果你想使用绝对位置,请设置布局(null);可以工作

你在问题中写道

我是新来的。。。到Java Swing

那么我建议您阅读本教程

不要调用方法
setBounds()
来放置组件–除非您没有使用布局管理器1,但根据您的代码,您正在使用布局管理器,因为您的代码不调用
frame.setLayout(null)

[内容窗格]
JFrame
的默认布局管理器为。由于您的代码不使用将
JButton
JTextField
添加到
JFrame
的方法,因此这两个组件都添加到中心面板中,因此一个在另一个之上绘制。此外,中心面板使其组件尽可能大。因此,
JButton
占据了所有的
JFrame

下面是对代码的重写,但我真的建议您花点时间,花点精力阅读整个教程——如果您真的想学习Swing的话。还请注意,在下面的代码中,我更改了那些不符合规范的名称。我们使用命名约定是为了让我们更容易阅读别人的代码,也让别人更容易阅读我们的代码

下面代码中需要注意的其他事项

  • ActionListener
    实现使用
  • 所有Swing代码都必须在事件分派线程(EDT)上执行。当您创建和显示
    JFrame
    时,它也会启动EDT,但是您也可以编写显式启动EDT的代码,这就是我在下面代码中的
    main()
    方法中所做的
  • 您可以调用
    setLocation…()
    方法之一,将
    JFrame
    放置在屏幕的特定部分。如果没有,则会将其放置在屏幕的左上角。下面的代码调用
    setLocationByPlatform()
    ,让主机操作系统决定在屏幕上找到
    JFrame
    的位置
导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
公共类JavaSwingPractice实现可运行{
@重写//java.lang.Runnable
公开募捐{
createAndShowGui();
}
私有void createAndShowGui(){
JFrame=newjframe(“对话框!”);
JTextField textF=新的JTextField(14);
JButton button=新JButton(“单击!”);
addActionListener(e->textF.setText(“成功!”);
JPanel面板=新的JPanel();
面板。添加(按钮);
frame.add(textF,BorderLayout.PAGE_START);
框架。添加(面板、边框布局。第_页结束);
frame.pack();
frame.setLocationByPlatform(真);
frame.setVisible(true);
}
公共静态void main(字符串[]args){
invokeLater(新的JavaSwingPractice());
}
}
是的,在上面的代码中我没有调用
setDefaultCloseOperation()
,因为至少在JDK 8中,默认值似乎是
EXIT\u ON\u CLOSE


1–有关布局管理器的说明和详细信息,请参阅Swing教程。

没有图像!,您必须编写代码,而不是使用图像。请解释一下错误。当“如预期”未定义时,很难帮助您。2.请张贴代码,而不是它的图像。3.不要使用空布局。相反,请使用适当的“参考”。不要发布代码的图像。