我正在尝试在 Java 中做一些事情,我只是将一个对象x, y
放在JFrame
. 我需要知道要使用什么布局,或者我需要做什么才能做到这一点。任何帮助都会很棒。谢谢
问问题
1229 次
2 回答
5
您可以使用null
布局来执行此操作,然后在组件上调用 setLocation 或 setBounds。但是你一般不应该这样做,因为这会导致非常不灵活的 GUI,在一个平台上看起来不错,在另一个平台上看起来很糟糕,而且很难更新和维护。只是不要这样做。
于 2013-03-08T02:08:59.067 回答
3
此示例使用空边框提供“空白”(或在本例中为“绿色”)。当然,如果框架中有其他组件,所有这些“特定坐标”会变得更加复杂,但是可以使用相同的技术为特定组件提供空白空间。
请注意,通常最好在提供空白时将组件包裹在面板中,以保留组件的现有边框。
import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
class SpecificCoords {
public static void main(String[] args) {
final int specificX = 40;
final int specificY = 20;
Runnable r = new Runnable() {
@Override
public void run() {
// imagine this is our 'frame'
JPanel gui = new JPanel(new BorderLayout());
JTextField tf = new JTextField(10);
JPanel borderPanel = new JPanel(new GridLayout());
borderPanel.add(tf);
borderPanel.setBorder(new EmptyBorder(
specificX, specificY,
specificX, specificY));
borderPanel.setBackground(Color.GREEN);
gui.add(borderPanel);
JOptionPane.showMessageDialog(null, gui);
}
};
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
SwingUtilities.invokeLater(r);
}
}
于 2013-03-08T03:45:15.927 回答