一列在JPanel的中心有3行

时间:2015-12-23 18:00:33

标签: java swing layout

我正在努力实现like this

enter image description here

问题出在这里,我不知道如何将不同对象的“一列”居中。已经尝试使用GridLayout和BorderLayout,但无法使这些元素居中。

如果有人可以提供帮助,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以试试import java.awt.*; import javax.swing.*; import javax.swing.border.*; public class BoxLayoutExample { public static void main(String[] arguments) { SwingUtilities.invokeLater(() -> new BoxLayoutExample().createAndShowGui()); } private void createAndShowGui() { JFrame frame = new JFrame("Stack Overflow"); frame.setBounds(100, 100, 800, 600); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS)); panel.setBorder(new EmptyBorder(28, 28, 28, 28)); JLabel label = new JLabel("Some longer text here......"); panel.add(label); label.setAlignmentX(Component.CENTER_ALIGNMENT); panel.add(Box.createRigidArea(new Dimension(0, 42))); String text = "image (can be done with \"new ImageIcon(\"image path\")\")"; JLabel image = new JLabel(text); panel.add(image); image.setAlignmentX(Component.CENTER_ALIGNMENT); panel.add(Box.createRigidArea(new Dimension(0, 42))); JButton button = new JButton("a button"); panel.add(button); button.setAlignmentX(Component.CENTER_ALIGNMENT); frame.getContentPane().add(panel); frame.setVisible(true); } } - 例如:A Visual Guide to Layout Managers。有关如何使用此布局管理器的更多详细信息,请访问:How to Use BoxLayout

如果使用框布局向组件添加组件,则可以按如下方式设置对齐:

void Start () 
{   
    if (Input.touchCount >=1)
    {
        GetComponent<Rigidbody2D> ().AddForce (new Vector2 (1f, 0.5f) * force);
    }

一个完整的例子:

jqgrid