gpt4 book ai didi

java - 如何在特定位置放置组件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:22 24 4
gpt4 key购买 nike

如何将布局中的组件放置在特定位置。就像我想在第一行中放置 2 个文本框,在 3 个组合框下方。

但是当我试图将它们全部显示在一行中时,我使用了流式布局。我也用过边框。当我调整大小时,组件的窗口大小超出了边界。

你能给我一些布局建议以及如何使用吗?

这是我的代码:

topPanel=new JPanel();
topPanel.setLayout(new FlowLayout());
topPanel.setBorder(new TitledBorder(new EtchedBorder(), "Customer Data"));

CNameTextField = new JTextField (20); // create the Customer Name text field
CNameTextField.setEditable(true); // set editable text box

CIDLabel=new JLabel("Customer ID");

C_IDTextField = new JTextField (10);
C_IDTextField.setEditable(true); // set editable text box

topPanel.add(CNameTextField);
topPanel.add(C_IDTextField);

// Create and populate Room type combo box
roomTypeCombo = new JComboBox();
roomTypeCombo.addItem( "Budget($50)" );

// Create and populate Meal type combo box
mealCombo = new JComboBox();
mealCombo.addItem( "None" );

// Create and populate Days combo box

daysCombo = new JComboBox();

for(int i=0;i<31 ; i++) {
// populate combobox with days
daysCombo.addItem(i);
}
// Adding rest of the components to top panel
topPanel.add(roomTypeCombo);
topPanel.add(mealCombo);
topPanel.add(daysCombo);

谢谢。

最佳答案

最具体的布局类型是绝对定位。

Warning: Absolute positioning should rarely, if ever, be used. There are many reasons why. Here is one: Absolute positioning (No layout manager) vs. absolute positioning in MiGlayout

- Thanks to user brimborium for the good idea of adding a warning.

话虽这么说,这里是如何使用绝对定位:

在上面的代码中,不是将 topPanel 的布局设置为 FlowLayout,而是将其设置为 null

topPanel.setLayout(null);

稍后在代码中,就在您开始向 topPanel 添加组件之前,调用容器的 setBounds 方法:

someJComponent.setBounds(x-coord, y-coord, width, height);

例如,您创建了一个 JComboBox() 实例并将其命名为 roomTypeCombo,以下代码显示了如何绝对定位 roomTypeCombo

topPanel.setLayout(null);

// code...

roomTypeCombo = new JComboBox();

// code...

roomTypeCombo.setBounds(100, 100, 200, 50);
topPanel.add(roomTypeCombo);

上面使用的setBounds方法有四个参数:

  • int x-coord - 设置 roomTypeCombo 的 x 坐标相对于它的父级 topPanel
  • int y-coord - 设置 roomTypeCombo 相对于其父级 topPanel 的 y 坐标。
  • int width - 指定 roomTypeCombo 的宽度。
  • int height - 指定 roomTypeCombo 的高度。


我只是玩弄坐标,看看你是否喜欢它产生的任何东西。可能发生的最糟糕的事情是你回到使用布局,这可能比绝对定位更好。或者您可以实现自己的 layout manager ,如果您点击此超链接,第一个答案将讨论实现您自己的布局管理器并提供有用的链接。

More information on absolute positioning

关于java - 如何在特定位置放置组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10015160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com