2016-03-06 130 views
1

我想將JTable放置在屏幕右中心部分的JPanel內,但無法在JPanel內顯示JTable,只有空白的JPanel正在顯示.PLease幫助。將JTable定位到JFrame中的JPanel中的(x,y)位置

TableModel tmodel = new DefaultTableModel(arr,columns) 
{ 
public Class getColumnClass (int column) 
{ 
Class returnValue; 
if((column >=0) && (column<getColumnCount())) 
{ 
returnValue = getValueAt(0,column).getClass(); 
} 
else 
{ 
returnValue = Object.class; 
} 
return returnValue; 
} 
}; 
JTable jtable = new JTable(tmodel); 
RowSorter <TableModel> rsorter = new TableRowSorter <TableModel> (tmodel); 
jtable.setRowSorter(rsorter); 
JScrollPane jspane = new JScrollPane(jtable); 
jp.add(jtable); 
jp.add(jspane,BorderLayout.CENTER); 
jp.setLayout(null); 
jp.setLocation(700,150); 
jp.setSize(600,350); 
jf.getContentPane().add(jp); 
} 
}; 
EventQueue.invokeLater(runner); 
} 
+0

您是如何創建JPanel對象的? –

+0

什麼是jf?並且您是否添加了setVisible(true)? –

+2

不要使用'null'佈局,它們不會造成麻煩。此外,一旦將其設置爲滾動窗格的視口,請不要將該表添加到任何位置;只需將滾動窗格添加到希望表格的位置即可。 – kiheru

回答

0

您的代碼有2個問題。第一個:你試圖將JTable實例添加到第一個滾動面板中,第二個添加到面板中。 第二個你應該設置你的佈局,你不能使用null佈局。 示例代碼可能如下所示:

jp.setLayout(new BorderLayout()); 
    JTable jtable = new JTable(tmodel); 
    RowSorter <TableModel> rsorter = new TableRowSorter<>(tmodel); 
    jtable.setRowSorter(rsorter); 
    JScrollPane jspane = new JScrollPane(); 
    jspane.setViewportView(jtable); 
    jp.add(jspane,BorderLayout.CENTER);  
    jp.setLocation(700,150); 
    jp.setSize(600,350); 
    jf.getContentPane().add(jp);