2015-06-02 17 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))。