如何修复 Java 中流布局的此错误?



我不知道为什么,但每次运行此代码都会出错。

错误是:线程"main"java.lang 中的异常:未解决的编译问题: JFrame 类型中的方法 setLayout(LayoutManager) 不适用于参数 (FlowLayout) 在桂。FlowLayout.main(FlowLayout.java:14)

我正在学习Java,我是初学者,所以我真的不知道该怎么做。请帮助我。

package gui;
import java.awt.LayoutManager;
import javax.swing.JButton;
import javax.swing.JFrame;
public class FlowLayout {
public static void main(String[] args) {

JFrame frame = new JFrame(); //cerates frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //exit out of application
frame.setSize(500, 500); //sets x-dimesion, and y-dimension of frame
frame.setLayout(new FlowLayout());

frame.add(new JButton("1"));
frame.setVisible(true);
}
}

gui.FlowLayout创建的类与您必须为框架提供的布局java.awt.FlowLayout之间存在潜在的冲突。

该错误是由于JFrame.setLayout()方法需要java.awt.FlowLayout而不是gui.FlowLayout,这是代码中唯一可用的 FlowLayout。

为了解决这个问题,我会做以下事情

  1. 通过重命名您创建的类(例如,重命名为FlowLayoutExample)来消除歧义。
  2. 导入您实际需要的java.awt.FlowLayout

代码应变为:

package gui;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.FlowLayout;
public class FlowLayoutExample {
public static void main(String[] args) {
JFrame frame = new JFrame(); //cerates frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //exit out of application
frame.setSize(500, 500); //sets x-dimesion, and y-dimension of frame
frame.setLayout(new FlowLayout());
frame.add(new JButton("1"));
frame.setVisible(true);
}
}

注意:还有另一种可能:可以跳过导入,直接提及完整的类名(带包):

frame.setLayout(new java.awt.FlowLayout());

我倾向于首选第一种解决方案,因为:

  • 名称FlowLayout并不能反映您的类所做的事情,而恕我直言FlowLayoutExample更明确。
  • 始终使用完整的类名会使代码更加冗长,因此可读性降低。

只需添加库:导入java.awt.FlowLayout

相关内容

  • 没有找到相关文章

最新更新