изменение размера окна JDialog - PullRequest
3 голосов
/ 24 января 2012

У меня проблемы с диалогом, который я создал.Он упаковывает все в отрезание заголовков и полей ввода.Я попытался установить размер панели и компонентов, но безрезультатно;размер никогда не меняется.Мы будем благодарны за любую помощь в изменении размеров диалога.

JTextField account = new JTextField(6);
account.setDocument(new JTextFieldLimit(6));
account.setBorder(new TitledBorder("account"));

String[] firstDigitList = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
JComboBox firstDigitCombo = new JComboBox(firstDigitList);
firstDigitCombo.setSelectedIndex(0);
firstDigitCombo.setBorder(new TitledBorder("Leading Digit Change"));

JPanel panel = new JPanel();
panel.add(account);
panel.add(firstDigitCombo);

int result = JOptionPane.showConfirmDialog(null, panel, "Please Enter Values", JOptionPane.OK_CANCEL_OPTION);

1 Ответ

5 голосов
/ 24 января 2012

Основная проблема заключается в том, что TitledBorder не будет расширять компонент до такой степени, что он будет достаточно большим для отображения всего текста.Вместо этого он просто усекает текст.

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

Test Size Of Gui

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

class TestSizeOfGui {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JTextField account = new JTextField(10);
                JPanel accountPanel = new JPanel(new GridLayout());
                accountPanel.add(account);
                accountPanel.setBorder(new TitledBorder("Account"));

                String[] firstDigitList = {
                    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};

                JLabel firstDigitListLabel = new JLabel("Leading Digit Change");
                JPanel firstDigitListPanel = new JPanel(new BorderLayout(4,2));
                firstDigitListPanel.add(firstDigitListLabel, BorderLayout.WEST);
                JComboBox firstDigitCombo = new JComboBox(firstDigitList);
                firstDigitListPanel.add(firstDigitCombo);
                firstDigitCombo.setSelectedIndex(0);
                firstDigitListPanel.setBorder(new TitledBorder("LDC"));

                JPanel panel = new JPanel();
                panel.add(accountPanel);
                panel.add(firstDigitListPanel);

                int result = JOptionPane.showConfirmDialog(
                    null,
                    panel,
                    "Please Enter Values",
                    JOptionPane.OK_CANCEL_OPTION);

                }
            });
    }
}
...