2012-01-24 94 views
3

我遇到了我創建的對話框的問題。它包裝了切割邊框標題和輸入框的所有內容。我已經嘗試設置面板和組件的大小,但無濟於事;大小從未改變。任何幫助,將不勝感激,能夠修改對話框的尺寸。調整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); 
+0

這纔是真正的代碼,或者你做一些佈局管理代碼呢? –

+0

我建議不要使用JOptionPane,因爲這個小部件根據例如傳遞的字符串。我使用Netbeans gui designer獲得了很好的結果。在你的情況下,一個基於JDialog的GUI可以完成這項工作。 – 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