调整元素的大小和位置

调整元素的大小和位置

public class InputURL {

public InputURL() {
    input();
}

private static JFrame mainFrame = Launcher.returnFrame();
private static JPanel mainPanel;

private void input(){


//Defining a Panel on which everything will be set
mainPanel = new JPanel();
mainPanel.setLayout(new GridBagLayout());

//To put the GridBagLayout Constraints
GridBagConstraints c = new GridBagConstraints();

//Set Panel Size
mainPanel.setSize(Constants.windowWidth,Constants.windowHeight);

//Setting the Input Box
JTextField inputURL = new JTextField();
c.fill = GridBagConstraints.CENTER;
c.ipady = 50;
c.weightx = 0.0;
c.gridwidth = 3;
c.gridx = 0;
c.gridy = 1;
mainPanel.add(inputURL, c);

//Adding the start button
JButton submitURL = new JButton(Constants.SUBMIT_URL_BUTTON);
submitURL.addActionListener(new ActionListener() {

    //The action performed by the start button
    public void actionPerformed(ActionEvent e)
    {
        //Execute when button is pressed
        }
});

//The placement of the button
c.fill = GridBagConstraints.VERTICAL;
c.ipady = 50;
c.weightx = 0.0;
c.gridwidth = 3;
c.gridx = 0;
c.gridy = 2;
mainPanel.add(submitURL, c);


//Adding the components on Panel to Frame
mainFrame.add(mainPanel);

}
}

输出和预期输出可在此处查看。需要有关输出的帮助。例如。:
java - 调整元素的大小和位置-LMLPHP
我尝试使用GridBagConstraints,由于某种原因,我不能在UI上玩太多。

最佳答案

很多事情都会取决于您的最终需求,例如,这只是利用了GridBagConstraints的一些基本属性

java - 调整元素的大小和位置-LMLPHP

import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestLayout {

    public static void main(String[] args) {
        new TestLayout();
    }

    public TestLayout() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        private JTextField inputURL;
        private JButton submitURL ;

        public TestPane() {
            inputURL = new JTextField(20);
            submitURL = new JButton("Submit the URL");
            submitURL.setMargin(new Insets(10, 10, 10, 10));

            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.insets = new Insets(10, 10, 10, 10);
            add(new JLabel("Header"), gbc);

            gbc.gridy++;
            gbc.insets = new Insets(0, 10, 20, 10);
            add(inputURL, gbc);

            gbc.gridy++;
            gbc.insets = new Insets(0, 0, 0, 0);
            gbc.weighty = 1.0;
            add(submitURL, gbc);
        }

    }

}


更复杂的解决方案可能是使用BorderLayoutGridLayoutGridBagLayout的混合布局

例如...

java - 调整元素的大小和位置-LMLPHP

public class TestPane extends JPanel {

    private JTextField inputURL;
    private JButton submitURL ;

    public TestPane() {
        setLayout(new BorderLayout());
        JLabel header = new JLabel("Header");
        header.setHorizontalAlignment(JLabel.CENTER);
        header.setBorder(new EmptyBorder(10, 10, 10, 10));
        add(header, BorderLayout.NORTH);

        inputURL = new JTextField(20);
        submitURL = new JButton("Submit the URL");
        submitURL.setMargin(new Insets(10, 10, 10, 10));

        JPanel content = new JPanel(new GridLayout(2, 1));

        JPanel field = new JPanel(new GridBagLayout());
        field.add(inputURL);

        content.add(field);

        JPanel actions = new JPanel(new GridBagLayout());
        actions.add(submitURL);

        content.add(actions);

        add(content);
    }

}


尽管这听起来很愚蠢,但要花更多的时间专注于用户的实际工作流程,这将使您做出最佳的布局决策,而不是专注于物理布局本身

关于java - 调整元素的大小和位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33598872/

10-10 16:21