Проблемы макета Gridbag в MA C jdk11 - PullRequest
0 голосов
/ 23 апреля 2020

Я использую компоновку gridbag в моем java приложении. Я использую кнопку и текстовое поле внутри макета. Я назначаю веса каждому компоненту. Пользовательский интерфейс соответствует ожидаемому в Windows, где текстовое поле занимает большую часть пространства с кнопкой в ​​конце. Однако на MA C происходит обратное, когда кнопка занимает большую часть пространства. Я не знаю, почему это происходит на МА C. Пожалуйста, помогите. Спасибо заранее.

Вот мой код:

JPanel p = new JPanel(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
textField = new JTextField(100);
gc.fill = GridBagConstraints.HORIZONTAL;
gc.weightx = 0.90;
p.add(textField,gc);       
button = new JButton();
button.setPreferredSize(null);
button.setText("Click");
gc.weightx = 0.10;
p.add(button,gc);

1 Ответ

0 голосов
/ 23 апреля 2020

macOS Catalina Версия 10.15.5 Beta (19F62f)

> java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

Layout

import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Main {

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

    public Main() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
            setLayout(new GridBagLayout());
            GridBagConstraints gc = new GridBagConstraints();
            JTextField textField = new JTextField(100);
            gc.fill = GridBagConstraints.HORIZONTAL;
            gc.weightx = 0.90;
            add(textField, gc);
            JButton button = new JButton();
            button.setPreferredSize(null);
            button.setText("Click");
            gc.weightx = 0.10;
            add(button, gc);
        }

    }
}
...