无法设置按钮';java swing应用程序中的位置
我是Java新手,正在尝试开发一个基本的swing应用程序。我想在无法设置按钮';java swing应用程序中的位置,java,swing,layout,jbutton,layout-manager,Java,Swing,Layout,Jbutton,Layout Manager,我是Java新手,正在尝试开发一个基本的swing应用程序。我想在JFrame上设置按钮的位置。我试图这样做,但无法做到这是我的代码。我正在使用eclipse进行开发 public class MyUI extends JFrame { JButton button1 = new JButton("Click"); JTextField tb1 = new JTextField(5); JPanel panel1 = new JPanel(); public
JFrame
上设置按钮的位置。我试图这样做,但无法做到这是我的代码。我正在使用eclipse进行开发
public class MyUI extends JFrame {
JButton button1 = new JButton("Click");
JTextField tb1 = new JTextField(5);
JPanel panel1 = new JPanel();
public MyUI() {
super("Test");
setVisible(true);
this.setLayout(null);
panel1.setLayout(null);
panel1.setVisible(true);
button1.setVisible(true);
panel1.add(button1);
add(panel1);
panel1.setLocation(10, 10);
button1.setLocation(10, 10);
setDefaultCloseOperation(EXIT_ON_CLOSE);
button1.addActionListener(this);
}
public static void main(String[] args) {
MyUI gui = new MyUI();
gui.setSize(400, 300);
}
}
1.为什么将两个
jcomponent
放在同一个边界上
panel1.setLocation(10, 10);
button1.setLocation(10, 10);
2.看一看
3.公共类MyUI扩展JFrame{
应该是
public class MyUI extends JFrame implements ActionListener{
4.不要扩展JFrame,创建一个局部变量
5.setVisible(true);
应该是(在此表单中)进入MyUI()构造函数的最后一行代码
6.setVisible(true);
是一个重要问题,您可以访问JFrame
,然后添加JComponent
(s)
7.不要使用NullLayout
,使用适当的LayoutManager
,以防删除this.setLayout(null);
和panel1.setLayout(null);
添加的JComponents
8.使用pack()
在setVisible(true)
之前作为构造函数中的最后两行代码
编辑(使用内置布局管理器,JFrame
的BorderLayout
和JPanel的FlowLayout
)
无法看到您的面板和按钮,因为它们的大小为零。请添加以下内容:
panel1.setSize(100, 100);
button1.setSize(80, 30);
或者使用更方便同时设置位置和大小的setBounds
方法:
panel1.setBounds(10, 10, 100, 100);
button1.setBounds(10, 10, 80, 30);
我想提出一些建议,虽然这不是你问题的直接答案,但从我的观点来看,这仍然很重要
您可以使用NetBeans团队在2005年开发的组布局
,这是一款非常棒的工具…尝试使用谷歌免费提供的Windows Builder Pro
。您可以在短时间内启动并运行您的应用程序……既然您似乎不使用布局,看看教程,您有什么理由这样做吗当您不使用布局时使用面板?另外:是否有原因,您不使用布局?Do.not.use.Null.Layout.Ever-LayoutManager的存在有一个原因,即在定位/调整组件大小时接管所有脏细节,利用它们!1.按钮位于面板内,因此按钮的位置相对于面板。可能(有时)miss_Speed by JVM,这是使用NullLayout而不插入公共类MyUI extends JFrame implements ActionListener的税否:a)不扩展JFrame b)不要公开不用于公共用途的api,或者换句话说:不要实现任何接口,而是在内部创建一个实例并使用该论坛未为Absolu打开的apiteLayou
t,+1只针对不投票人
,永远不要使用NullLayout
而不使用Insets
,永远不要使用setBounds(),使用在parents-1附近返回的Insets
(正如@mKorbel所预期的;-)在接近100%的上下文中,空布局是不正确的……相反,选择并使用一个能满足您需要的布局管理器
panel1.setBounds(10, 10, 100, 100);
button1.setBounds(10, 10, 80, 30);