Сложность с JTabbedPane (ошибочное сжатие контента) - PullRequest
0 голосов
/ 28 октября 2010

У меня есть графический интерфейс, созданный с помощью Java Swing.У меня есть JPanel, который содержит все мои элементы управления:

    JPanel rightSidePanel = new JPanel(new GridBagLayout());
    rightSidePanel.add(forwardKinematics, new GridBagConstraints());

Это работает отлично.Тем не менее, я хотел бы добавить вкладку управления.К сожалению, добавление вкладок нарушает компоновку:

    JTabbedPane tabs = new JTabbedPane();
    tabs.addTab("Forward Kinematics", forwardKinematics);

    JPanel rightSidePanel = new JPanel(new GridBagLayout());
    rightSidePanel.add(tabs, new GridBagConstraints());

Теперь некоторые элементы управления в forwardKinematics ужасно хрустят, вместо того, чтобы расширяться до их полного размера.Есть ли способ, которым я должен указать, что элементы управления могут расширяться и занимать столько места, сколько они хотят?

Я использую макеты gridbag.

Вот код, который создаетэлементы управления пользовательского интерфейса, которые становятся раздавленными (с удаленными нерелевантными выдержками):

    panel.add(label, new GridBagConstraints());

    GridBagConstraints gbc = new GridBagConstraints();

    final DefaultTableModel model = new DefaultTableModel();
    model.addColumn("foo");
    model.addColumn("bar");
    final JTable table = new JTable(model);
    JScrollPane scrollPane = new JScrollPane(table);
    table.setFillsViewportHeight(true);
    gbc = new GridBagConstraints();
    gbc.gridy = 2;
    gbc.ipady = 10;
    gbc.ipadx = 10;
    panel.add(scrollPane, gbc);

    final JComboBox comboBox = new JComboBox();

    gbc = new GridBagConstraints();
    gbc.gridy = 1;
    panel.add(comboBox, gbc);

    JButton makeNewButton = new JButton("Make new from current state");
    gbc = new GridBagConstraints();
    gbc.gridy = 1;
    panel.add(makeNewButton, gbc);

    JButton deleteButton = new JButton("Delete Current Keyframe");
    gbc = new GridBagConstraints();
    gbc.gridy = 2;
    panel.add(deleteButton, gbc);

    JButton playAll = new JButton("Play All");
    gbc = new GridBagConstraints();
    gbc.gridy = 2;
    panel.add(playAll, gbc);

Что я здесь не так делаю?

Обновление : я пытался использовать tabs.setPreferredSize().Это делает область вокруг вкладки больше (как будто я добавляю отступы), но содержимое внутри них остается сжатым, как всегда.

Ответы [ 2 ]

1 голос
/ 28 октября 2010

Вы, похоже, упускаете МНОЖЕСТВО настроек, которые вы, вероятно, хотите установить в своих ограничениях сетки. Вы устанавливаете все в gridy = 2, что помещает их в одну ячейку.

gridbaglayout работает как таблица с настраиваемыми строками и столбцами.

1 голос
/ 28 октября 2010

По умолчанию построено GridBagConstraints использует NONE для fill.В вашем случае вы, вероятно, захотите использовать BOTH.

Если вы хотите использовать GridBagLayout, хотя бы прочитайте базовый учебник .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...