如何在java中使对象居中
Posted
技术标签:
【中文标题】如何在java中使对象居中【英文标题】:How do I center an object in java 【发布时间】:2013-03-04 18:05:11 【问题描述】:我想制作一个有一个按钮和多个字段的简单程序。当我在脑海中计划这个时,我想使用网格布局,或者至少在我学习时首先使用按钮。这是我到目前为止所拥有的,我要问的问题是我应该在哪里放置我的网格布局,或者我是否在面板、框架或按钮中设置对齐中心?
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Normal
public static void main(String[] args)
JFrame frame = new JFrame("test");
JButton button = new JButton("why");
JPanel panel = new JPanel();
JTextField field= new JTextField();
//button
button.setSize(50, 50);
//Field
field.setSize(250, 25);
//Frame
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(panel);
frame.add(field);
frame.add(button);
【问题讨论】:
不要使用setSize,让布局管理器来处理。尝试使用不同的布局管理器。 GridLayout 将使组件平均填充可用空间 【参考方案1】:始终在JFrame
的Container
中添加组件。将Container
的Layout设置为GridLayout
。例如,您可以按如下方式更改代码:
import java.awt.GridLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Normal
public static void main(String[] args)
JFrame frame = new JFrame("test");
JButton button = new JButton("why");
JPanel panel = new JPanel();
JTextField field= new JTextField();
Container c = frame.getContentPane();
c.setLayout(new GridLayout(3,1));//Devides the container in 3 rows and 1 column
c.add(panel);//Add in first row
c.add(button);//Add in second row
c.add(field);//Add in third row
frame.setSize(500, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
【讨论】:
将组件直接添加到框架中相当于将它们添加到 ContentPane。 @user1241388:我的荣幸。:)。如果它解决了您的问题,则将答案标记为已接受。看这里就知道如何接受答案了..meta.stackexchange.com/questions/5234/…【参考方案2】:在从 JFrame 扩展类的方法中,您可以简单地设置要添加组件的位置。如果您有一个带有 ex 的面板。一个按钮,你可以这样添加:
add(panel, BorderLayout.CENTER);
希望这会有所帮助。
【讨论】:
以上是关于如何在java中使对象居中的主要内容,如果未能解决你的问题,请参考以下文章