2015-06-02 21 views
0

我有一個類,它返回一個JPanel:的Java配件的JPanel成模態的JDialog

public static JPanel program(String csvName) { 

     JPanel f = new JPanel(); 

     try { 

      String path = System.getProperty("user.dir"); 

      String datafile = path+"/files/logic/"+csvName+".csv"; 
      FileReader fin = new FileReader(datafile); 
      DefaultTableModel m = createTableModel(fin, null); 
      JTable table = new JTable(m); 
      JScrollPane stable = new JScrollPane (table); 
      stable.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 
      stable.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
      table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 

      f.add(stable); 

      f.setMinimumSize(new Dimension(900,500)); 
      JFrame desktopFrame = new JFrame(); 
      desktopFrame.add(f); 
      desktopFrame.setSize(900, 500); 
      desktopFrame.setVisible(true); 

      toExcel(m, new File(path+"/files/logic/"+csvName+".csv")); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return f; 

    } 

而這就是用來顯示JPanel的模態。

String csv = "war"; 
JPanel f = T1Data.program(csv); 

JDialog desktopFrame = new JDialog(); 
desktopFrame.add(f); 
desktopFrame.setModal(true); 
desktopFrame.setSize(900, 500); 
desktopFrame.setVisible(true); 

但是我得到的結果是JPanel居中並且不適合JDialog。

它看起來像這樣: http://gyazo.com/4bc360e7d2c7cf7117a95d748d520838.png

我該如何解決這個問題?

回答

0

JPanel是使用FlowLayout,如果將其更改爲BorderLayout,滾動面板將進行佈局,使其充滿滿容器。

你也應該考慮使用JDialog#packsetSize以及

+0

的感謝! http://stackoverflow.com/questions/30606331/java-csv-updater-not-saving-updated-tablemodel你也可以檢查這個問題嗎?這是另一個問題;) –

0

爲了使面板適合對話框的大小,你可以改變對話框的LayoutManager,或者,因爲這顯然應該是唯一的面板添加到對話框,只需將面板的contentPane(desktopFrame.setContentPane(f)代替desktopFrame.add(f))。