2012-01-24 1 views
3

У меня возникли проблемы с созданным диалогом. Он упаковывает все, чтобы отключить заголовки границ и поля ввода. Я попытался установить размер панели и компонентов, но безрезультатно; размер никогда не меняется. Любая помощь была бы оценена в возможности изменять размеры диалогового окна.изменение размера JDialog box

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); 
+0

это реальный код или вы делаете некоторые LayoutManager код, а? –

+0

Я предлагаю не использовать JOptionPane, поскольку эти виджеты выполняют некоторую автоматическую калибровку в зависимости от, например, переданная строка. У меня были хорошие результаты, используя дизайнер GUI Netbeans. В вашем случае gui на основе JDialog выполнит эту работу. – boto

+0

реальный код. Пользователь выбирает файл и на основе файла отображается jdialog. У меня есть несколько других компонентов, добавленных в панель, но они оставили их, чтобы сэкономить место на почте. – whitewolfpgh

ответ

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); 

       } 
      }); 
    } 
} 
+0

Принимая взглянуть на это сразу после обеда Эндрю. – whitewolfpgh

+0

+1 учебный предмет в этот день ???? Основная проблема заключается в том, что TitledBorder ??? так странно это JPanel – mKorbel

+0

Это похоже на то, что я хотел сделать. Просто научился совершенно новому способу манипулировать JDialog. О, мальчик, гораздо больше, чтобы учиться и делать! Еще раз спасибо! – whitewolfpgh

 Смежные вопросы

  • Нет связанных вопросов^_^