如何将多个元素彼此对齐? [英] How to align multiple elements below each other?

查看:53
本文介绍了如何将多个元素彼此对齐?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很难使Swing元素在彼此下方对齐.使用 GridLayout 对我无济于事,因为它将屏幕分为大小相等的行.我需要在每一行中放置一个组件,而下一个组件应该在最后一个组件的最底部.

I am having difficulty in aligning Swing elements flow below each other. Using GridLayout does not help me because it divides screen to rows which have equal sizes. I need to put one component to each row and the next component should be in very bottom of the last component.

Mi问题是,如果问题的选择多于一行,则此布局会将它们挤压到行中,并且图片和问题"3 + 3?"之间存在巨大差距.

Mi problem is that if the choices of the question are more than one line, this layout squeeze them to the rows and there is a huge gap between picture and question "3+3?"

推荐答案

您可以为此使用 GridBagLayout .这是非常容易使用.这是一个示例实现.

You can use GridBagLayout for this. It is very easy to use. Here is a sample implementation.

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

class MyFrame extends JFrame {

    public MyFrame() {
        JPanel panel = new JPanel(new GridBagLayout());

        JLabel image = new JLabel();
        image.setIcon(new ImageIcon(getClass().getResource("/image.png")));

        JLabel question = new JLabel("3 + 3 = ?");

        JRadioButton rb1 = new JRadioButton("5");
        JRadioButton rb2 = new JRadioButton("3");
        JRadioButton rb3 = new JRadioButton("6");
        JRadioButton rb4 = new JRadioButton("9");
        JRadioButton rb5 = new JRadioButton("23");

        GridBagConstraints c = new GridBagConstraints();

        c.gridx = 0;//set the x location of the grid for the next component
        c.gridy = 0;//set the y location of the grid for the next component
        panel.add(image,c);

        c.gridy = 1;//change the y location
        c.anchor=GridBagConstraints.WEST;//left align components after this point
        panel.add(question,c);

        c.gridy = 2;//change the y location
        panel.add(rb1,c);

        c.gridy = 3;//change the y location
        panel.add(rb2,c);

        c.gridy = 4;//change the y location
        panel.add(rb3,c);

        c.gridy = 5;//change the y location
        panel.add(rb4,c);

        c.gridy =6;//change the y location
        panel.add(rb5,c);

        this.getContentPane().add(panel);

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.pack();
    }

    public static void main(String[] args) {
        MyFrame myFrame = new MyFrame();
        myFrame.setVisible(true);
    }

}

参考文献: https://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

这篇关于如何将多个元素彼此对齐?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆