0

我正在尝试在 Java 中做一些事情,我只是将一个对象x, y放在JFrame. 我需要知道要使用什么布局,或者我需要做什么才能做到这一点。任何帮助都会很棒。谢谢

4

2 回答 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 回答