JTable внутри JPanel внутри JOptionPane не будет изменять размер, как хотелось бы

У меня есть два объекта JTable внутри JPanel с GridLayout. Я помещаю их в JOptionPane и показываю как всплывающее окно OK_CANCEL. Я также поставил JScrollPane на обе таблицы.

Однако размер JOptionPane огромен. Я попытался установить разные размеры таблицы, панели прокрутки и jpanel с помощью:

table.setSize(int w, int h)
jpanel.setSize(int w, int h)
jscrollpane.setSize(int w, int h)

но ни один из них не приведет к уменьшению JOptionPane (или таблицы).

Вот как это выглядит, я использую разрешение 1366*768. Ничего из вышеперечисленного не имело бы никакого значения

Вот как это выглядит

private void showEditItemSuppliersDialog()
    {
    String newItemSupplierTables [] = { "#", "Name", "" };
        JPanel panel = new JPanel(new GridLayout(0, 2, 5, 5));

        /* table 1 */
        allItemsEditItemSuppliersTableModel = new DefaultTableModel(null, newItemSupplierTables);

        allItemsEditItemSuppliersTable = new JTable(allItemsEditItemSuppliersTableModel);
        allItemsEditItemSuppliersTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        JScrollPane allItemsEditItemSuppliersTableScrollPane = new JScrollPane();
        allItemsEditItemSuppliersTableScrollPane.setViewportView(allItemsEditItemSuppliersTable);
        /* table 1 end */

        /* table 2 */
        allItemsEditItemSuppliersAllTableModel = new DefaultTableModel(null, newItemSupplierTables);

        allItemsEditItemSuppliersAllTable = new JTable(allItemsEditItemSuppliersAllTableModel);
        allItemsEditItemSuppliersAllTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        JScrollPane allItemsEditItemSuppliersAllTableScrollPane = new JScrollPane();
        allItemsEditItemSuppliersAllTableScrollPane.setViewportView(allItemsEditItemSuppliersAllTable);
        /* table 2 end*/

        panel.add(allItemsEditItemSuppliersTableScrollPane);
        panel.add(allItemsEditItemSuppliersAllTableScrollPane);

        int option = JOptionPane.showConfirmDialog(null, panel, "Edit", JOptionPane.OK_CANCEL_OPTION);

        if (option == JOptionPane.YES_OPTION)
        {   
            System.out.println("Pressed OK");
        }
    }

person Nikola    schedule 28.05.2013    source источник


Ответы (1)


Вы должны установить предпочтительный размер области просмотра таблиц, используя setPreferredScrollableViewportSize(Dimension).

person JB Nizet    schedule 28.05.2013
comment
Спасибо, как только я смогу принять ответ, я это сделаю, так как это было то, что мне было нужно. - person Nikola; 29.05.2013