Поиск местоположения JButton дает мне значение, только если поставить после того, как экран установлен в видимый - PullRequest
0 голосов
/ 14 марта 2019

Так что я в основном в затруднительном положении.Я пытаюсь найти местоположение JButton, используя аксессор .getLocation (), однако мне кажется, что это работает только тогда, когда я ставлю его после того, как окно установлено как видимое - в противном случае он возвращает только x как 0 и y как 0Я не могу поставить это после того, как окно становится видимым в моем конкретном случае, как будто я делаю это, кнопки не инициализируются в первую очередь.Мне в основном интересно, является ли их аксессор, который находит расположение этих кнопок, прежде чем окно будет установлено как видимое?Вот код, который я использую, который возвращает x & y как 0:

    public class Test {
    public Test() {
        JButton buttonOne = new JButton();
        JButton buttonTwo = new JButton();
        JPanel panel = new JPanel();
        JFrame window = new JFrame("Test");
        GridLayout g = new GridLayout();

        panel.add(buttonOne);
        panel.add(buttonTwo);
        panel.setLayout(g);
        System.out.println(buttonTwo.getLocation());


        window.setContentPane(panel);
        window.setSize(512, 512);
        window.setVisible(true);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }
}

1 Ответ

0 голосов
/ 14 марта 2019

Скорее всего, проблема не в видимости, а в том, что макета еще не было.Разметки Swing не пересчитывают все каждый раз, когда элемент управления добавляется или удаляется.

Создание окна видимым является лишь одним из способов обеспечения того, что содержимое было размечено.Другой будет явно вызывать pack().

...