2012-05-21 70 views
0

使用下面的代码不可见的,不能设法得到列标题show..Added Jscroolpane为好,但没有运气...列标题JTable中

String[] col = {"COLA","COLB","COLC"}; 
Object[][] data = {}; 

DefaultTableModel model = new DefaultTableModel(data,col); 


JTable table = new JTable(model); 
JScrollPane scrollPane = new JScrollPane(table); 

contentPane.add(table); 
table.setBounds(295, 11, 512, 411); 
contentPane.add(scrollPane,BorderLayout.CENTER); 

回答

2

这工作:

public static void main(String[] args) { 
    String[] col = { "COLA", "COLB", "COLC" }; 
    Object[][] data = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; 
    DefaultTableModel model = new DefaultTableModel(data, col); 
    JTable table = new JTable(model); 
    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().add(new JScrollPane(table)); 
    frame.setVisible(true); 
} 
+0

如何我可以在当前帧使用此表?没有显示一个新的框架?试过contentPane.add(table);但没有工作... – Sin5k4

+0

看看我的代码中的包容层次结构:'框架 - >内容窗格 - > jscrollpane - > jtable'。所以在你的情况下,你只需将'JScrollPane'添加到你的内容窗格中...... –

3

当你构建JScrollPane的,你将它传递给它的唯一子组件。但是,您将表添加到contentPane,这意味着您将其从JScrollPane中移除并将其添加到内容窗格。您不能将该表添加到contentPane。只有scrollPane,它本身包含表格。

另外,从来没有使用setBounds()。无论如何,因为您使用的布局管理器负责定位组件,所以它毫无意义。在这种情况下,由于该表由JScrollPane处理,所以它甚至是有意义的。

+0

我明白了,但如果我删除contentPane.add(表),我不能看到表在所有... – Sin5k4