java怎样创建一个表格

我只想创建一个9行俩列的表格,列标题为 姓名,电话号码;
我先导入了
import ...
import javax.swing.table.DefaultTableModel;
public class LP extends JFrame{
private DefaultTableModel tb;
public LP{
String titles[]={"姓名","电话号码"};
this.tb=new DefaultTableModel(titles,9);
JTable jtable=new JTable(this.tb);
this.setVisible(true);
}
}
为什么显示的框架里面无表格?



import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class TableFrame extends JFrame
{
private static final long serialVersionUID = 1L;
private final String[] NAMES = { "姓名", "电话号码" };
private final String[][] DATA = { { "2014-11-08", "2013-11-08" }, { "2014-06-03", "2013-11-08" }, { "2014-01-01", "2013-11-08" },
{ "2014-12-02", "2013-11-08" }, { "2014-11-08", "2013-11-08" }, { "2014-12-02", "2013-11-08" }, { "2014-10-08", "2013-11-08" },
{ "2014-12-02", "2013-11-08" }, { "2014-09-08", "2013-11-08" }, { "2014-11-08", "2013-11-08" } };
private JTable tableView = null;
private SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd");

public TableFrame ( String title )
{
setTitle (title);
}

private void createTable ()
{
TableModel dataModel = new AbstractTableModel ()
{
private static final long serialVersionUID = 1L;

public int getColumnCount ()
{
return NAMES.length;
}

public int getRowCount ()
{
return DATA.length;
}

public Object getValueAt ( int row, int col )
{
return DATA[row][col];
}

public String getColumnName ( int column )
{
return NAMES[column];
}
};
tableView = new JTable (dataModel);
Date date = new Date ();
final String dt = sdf.format (date);
tableView.setDefaultRenderer (Object.class, new TableCellRenderer ()
{
@Override
public Component getTableCellRendererComponent ( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column )
{
Component render = new DefaultTableCellRenderer ().getTableCellRendererComponent (table, value, isSelected, hasFocus, row, column);
if (dt.equals (table.getValueAt (row, 0)))
{
render.setBackground (Color.RED);
}
return render;
}
});
TableRowSorter<TableModel> tableRowSorter = new TableRowSorter<TableModel> (dataModel);
tableView.setRowSorter (tableRowSorter);
JScrollPane scrollpane = new JScrollPane (tableView);
scrollpane.setPreferredSize (new Dimension (500, 200));
setLayout (new BorderLayout ());
add (scrollpane, BorderLayout.CENTER);
JPanel panel = new JPanel ();
panel.setSize (500, 100);
panel.setLayout (new FlowLayout (FlowLayout.CENTER));
add (panel, BorderLayout.SOUTH);
}

private static void initFrame ( TableFrame tc )
{
tc.setSize (512, 300);
tc.setResizable (false);
tc.setLocationRelativeTo (null);
tc.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
tc.setVisible (true);
}

public static void main ( String[] args )
{
TableFrame tc = new TableFrame ("TableFrame");
tc.createTable ();
initFrame (tc);
}
}追问

非常感谢,不过我是一个初学者,有的看不太懂,您能在我的代码上作点改动,使其成功。或者告诉我 我的代码为什么不行的原因? 万分感谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-29
你没有把表格加到窗体frame中,加到里面就可以了
相似回答