Есть ли ограничение для JPanel, отображаемого в JFrame?

У меня возникают проблемы при добавлении JPanels в JFrame. В моем JFrame есть GridBagLayout, куда я добавляю эти JPanels горизонтально, я тестировал его в двух случаях, первый отображал 55 JPanels, расположенных в строке с полосой прокрутки, второй вообще не работал, он должен был отображать 76 JPanels, но результат получился очень странным:

Есть ли ограничение для JPanel, отображаемого в JFrame?

Я не публикую код, потому что думаю, что он не имеет ничего общего с кодом, возможно, это предел программирования GUI с помощью Swing. Я не смог найти никакой информации об этом (ограничении) или той же проблеме, которая происходит со мной.

Спасибо

РЕДАКТИРОВАТЬ

Хорошо, я работал над следующим кодом:

import javax.swing.*;
import java.awt.*;

public class TestingFrame extends JPanel {

    public TestingFrame() {

        this.setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();

        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.weightx = 0.0;
        gbc.weighty = 0.0;

        gbc.anchor = GridBagConstraints.LINE_START;
        gbc.fill = GridBagConstraints.BOTH;


        int numOfPanels = 10000;

        for (int i = 0; i < numOfPanels; ++i) {
            JPanel toAdd = new JPanel();
            JButton tmp = new JButton("HELLO IT'S ME");

            toAdd.add(tmp);

            gbc.gridx = i;
            this.add(toAdd, gbc);
        }

    }

    public static void main(String[] args) {

        JFrame frame = new JFrame();

        TestingFrame view = new TestingFrame();

        JScrollPane scrPane = new JScrollPane(view);

        frame.add(scrPane);
        frame.pack();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

}

Этот код воспроизводит ошибку, о которой я вам говорил ранее. Обратите внимание, что для воспроизведения ошибки потребовалось больше панелей из-за количества компонентов JPanels, которые я использую сейчас, они меньше, чем исходные (всего одна кнопка).

«Я не публикую код, потому что считаю, что он не имеет ничего общего с кодом ...» - как вы можете сделать такое предположение, если еще не знаете причину проблемы?

Hovercraft Full Of Eels 09.12.2018 21:10

И, не видя кода, я не могу сказать вам, в чем проблема, но я могу дать оценку, основываясь на моем личном опыте с ошибками: 99,999% случаев проблема связана с моим собственным кодом, а не с самой Java. Держу пари, что ваши шансы похожи на мои.

Hovercraft Full Of Eels 09.12.2018 21:18

@HovercraftFullOfEels Конечно, в 99.999999999% случаев проблема - моя, но я предполагал, что на этот раз нет. Работаю над тем, чтобы сделать код независимым или похожий код, который вызывает ту же ошибку, как только я ее получу, я опубликую ее.

Marc43 09.12.2018 21:32

Это мудрое решение

Hovercraft Full Of Eels 09.12.2018 21:33

В вашем графическом интерфейсе есть артефакты рисования, что иногда происходит, если код блокирует поток событий при создании.

Hovercraft Full Of Eels 09.12.2018 21:37

@HovercraftFullOfEels Извините? Вы говорите, что может быть какое-то вытеснение потоков? Полагаю, это будет сложно отладить? Кстати, я выложил код, который воспроизводит ошибку :)

Marc43 09.12.2018 21:46

@HovercraftFullOfEels Почему это "приостановлено"? Я разместил минимальный, полный и проверяемый фрагмент кода. Разве это не то, что вы хотели проверить, что это происходит?

Marc43 09.12.2018 22:37

Голосование за повторное открытие вопроса, но, сказав и сделав это, ваш код не воспроизводит для меня проблему.

Hovercraft Full Of Eels 09.12.2018 23:12

Даже увеличивая numOfPanels? Какую операционную систему вы используете?

Marc43 10.12.2018 08:18
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
9
260
0

Другие вопросы по теме