2011-06-01 39 views
0

我正在使用JFrame來顯示帶有一些文本和2個按鈕的消息框。如何根據框的大小自動換行文字?Java:文本沒有包裝在JFrame對話框中

這裏是我當前的代碼:

 dialogFrame = new JFrame(); 

     JButton newButton = new JButton("New"); 
     newButton.addActionListener(new newUploadAction()); 

     JButton resumeButton = new JButton("Resume"); 
     resumeButton.addActionListener(new resumeUploadAction()); 

     //dialogFrame.setUndecorated(true); 

     JPanel addPanel = new JPanel(); 

     JPanel addPanel2 = new JPanel(); 

     addPanel.add(newButton); 
     addPanel.add(resumeButton); 

     String text = "<html><p>A previous control file exists for this file. "; 
     text += "Would you like to initiate a new transfer or resume the previous one?</p></html>"; 

     JLabel testLabel = new JLabel(text); 

     //testLabel.setPreferredSize(new Dimension(1, 1)); 

     addPanel2.add(testLabel); 


     Container content = dialogFrame.getContentPane(); 


     //content.setBackground(Color.white); 
     content.setLayout(new BoxLayout(content, BoxLayout.PAGE_AXIS)); 

     content.add(addPanel2); 
     content.add(addPanel); 


     dialogFrame.setSize(200,200); 
     dialogFrame.setVisible(true); 
     dialogFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

我讀的地方,叫

testLabel.setPreferredSize(new Dimension(1, 1)); 

會導致包裝的行爲我想,但只是導致文本完全無法顯示了。

+0

可能的重複 - http://stackoverflow.com/questions/2420742/make-a-jlabel-wrap-its-text-by-setting-a-max-width – mre 2011-06-01 03:25:41

回答

3

您可以將文本置於JTextArea中,並在JTextArea上致電setLineWrap(true)setWrapStyleWord(true)。如果你想讓它看起來更多JLabel-ish,那麼只需更改JTextArea的顏色設置即可。

編輯1

此外還有一件事可以工作:考慮讓持有JPanel使用BorderLayout

JPanel addPanel2 = new JPanel(new BorderLayout()); //!! added BorderLayout 

使得加入的JLabel將填補addPanel2

+1

+1提到'JTextArea'解決方案和酷名稱,但另一種選擇是嵌入'HTML'。 – mre 2011-06-01 03:26:49

+1

@mre:HTML的問題是你需要指定換行符的位置,而我相信* OP需要根據GUI大小換行的行。 – 2011-06-01 03:48:14

+2

@HFOE:「HTML的問題在於,您需要指定換行符的位置。」不適用於少量的CSS。例如。 ''。在[這個答案](http://stackoverflow.com/questions/5805328/java-html-in-swing-link-margin-not-working/5806181#5806181)輸出被限制爲600px寬度。 – 2011-06-01 04:54:37