调整JDialog框的大小

时间:2012-01-24 16:29:39

标签: java swing jdialog

我在创建对话框时遇到问题。它包含了切断边框标题和输入框的所有内容。我已经尝试设置面板和组件的大小,但无济于事;大小永远不变。如果能够修改对话框的尺寸,将会有任何帮助。

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 个答案:

答案 0 :(得分:5)

基本问题是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);

                }
            });
    }
}