所以我想實作一些非常簡單的事情。 在我的應用程式中,用戶可以查閱一些檔案的內容。 首先,檔案的內容是HTML,所以我用JEditorPane來顯示它。其次,檔案內容有點長。因為我希望它是可滾動的,所以我把它包裝在JScrollPane中。最后,這個視窗應該是模態的。所以我又把它包裝在一個JDialog中。以下是我的代碼:
JEditorPane ep = new JEditorPane()。
ep.setContentType("text/html")。
ep.setEditable(false)。
ep.setText(longHtmlString)。
JScrollPane sp = new JScrollPane(ep)。
sp.getViewport().setPreferredSize(new java.awt.Dimension(500, 1500) )。)
JDialog dialog = new JDialog() 。
dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)。
dialog.getContentPane().add(sp);
dialog.setModal(true)。
dialog.setResizable(false)。
dialog.pack();
dialog.setVisible(true)。
但這里是我得到的輸出。 輸出
正如你所看到的,沒有滾動條,對話框只是占用了HTML內容的整個高度。我想讓對話框有一個固定的高度和一個垂直滾動條。內容將永遠像截圖上的那樣長。我已經嘗試在3個組件(編輯器、滾動窗、jdialog)中的任何一個上設定大小,但我無法實作我的愿望。我是不是錯過了什么?
uj5u.com熱心網友回復:你的對話框將是Modal,所以請確保你將對話框設定為總是在其他視窗的上面:
dialog.setAlwaysOnTop(true)。
將對話框真實地顯示在某個特定的視窗或組件上。如果你想讓對話框顯示在顯示幕螢屏的中央,那么讓它相對于null顯示:
........
dialog.pack()。
dialog.setLocationRelativeTo(null)。
dialog.setVisible(true)。
在這種特殊情況下,你可以在最終的組件級別上設定事物的首選尺寸,然而你最終會發現,這可能會導致一些不理想的結果。將對話框設定為你想要的大小,然后讓pack()來處理其余的事情:
dialog.setPreferredSize(new java. awt.Dimension(500, 400) )。
正如@camickr在評論中已經提到的那樣,將尺寸設定為更實際的東西。高度設定為1500有點多,但我相信這是一個打字錯誤,你的實際意圖是500,500。
如果你打算為你的對話框設定一個標題欄(大多數人都是這樣做的),那么在其中設定一個實際的標題總是很好的,這樣可以表示顯示內容是關于什么的:
dialog.setTitle("Would be nice to have a title here... - longHtmlString")。)
設定你的滾動條窗格的水平和垂直策略,以便該組件知道預期的情況:
sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEED)。
通過上述設定,任何一個滾動條都將被顯示IF它們是需要的。
有時,能夠調整一個視窗的大小,以捕捉超出限制的一點點資料,而不是一直使用滾動條,這一點很好。您可能需要考慮洗掉 dialog.setResizable(false); 一行代碼,以便在需要時確實可以調整對話框的大小。
為了使放置在 JEditorPane 中的文本材料從檔案的頂部而不是底部開始顯示,您可能需要考慮將游標位置移動到索引位置0。是的,即使編輯器窗格被設定為不可編輯,這也是可行的:
ep.setCaretPosition(0)。
下面的應該作業正常:
// The JDialog Window...
JDialog dialog = new JDialog() 。
dialog.setTitle("如果這里有一個標題就好了。- longHtmlString")。)
dialog.setAlwaysOnTop(true)。
dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)。
dialog.setPreferredSize(new java.awt.Dimension(500, 400) )。)
dialog.setModal(true)。
//dialog.setResizable(false);
//JEditorPane...
JEditorPane ep = new JEditorPane()。
ep.setContentType("text/html")。
ep.setEditable(false)。
ep.setText(longHtmlString)。
ep.setCaretPosition(0)。
//JScrollPane...
JScrollPane sp = new JScrollPane(ep); //Declared JEditorPane添加到這里。
sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED)。
sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEED);
//為對話框添加組件,打包并顯示對話框。
dialog.getContentPane().add(sp);
dialog.pack();
dialog.setLocationRelativeTo(null)。
dialog.setVisible(true)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/310263.html
標籤:
上一篇:有兩個字典的Python嵌套For回圈,內回圈不重設
下一篇:如何測驗JFrame的大小變化?
