扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
要想显示 JTable 需要把 JTable 先添加 JScroolPane 控件中,然后再把这个 JScrollPane 添加到 JFrame 或其他容器控件中才能显示。
创新互联公司成立与2013年,是专业互联网技术服务公司,拥有项目网站设计制作、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元天镇做网站,已为上家服务,为天镇各地企业和个人服务,联系电话:13518219792
在上面的代码中,在 table.invalidate() 后面添加如下代码:
this.add(new JScrollPane(table), BorderLayout.CENTER);
完整代码如下:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class App76 extends JFrame {
public App76() {
this.setSize(600, 400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String[] headers = { "表头一", "表头二", "表头三" };
Object[][] cellData = null;
DefaultTableModel model = new DefaultTableModel(cellData, headers) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
JTable table = new JTable(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableColumn firsetColumn = table.getColumnModel().getColumn(0);
firsetColumn.setPreferredWidth(30);
firsetColumn.setMaxWidth(30);
firsetColumn.setMinWidth(30);
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
int count=3;
tableModel.setColumnCount(count);
table.setRowHeight(20);
tableModel.setRowCount(0);
String[] arr={"aaaaa","bbbbbb","cccccc"};
tableModel.addRow(arr);
table.invalidate();
this.add(new JScrollPane(table), BorderLayout.CENTER);
}
public static void main(String[] args) {
new App76().setVisible(true);
}
}
我改了一下,试试
import java.awt.Dimension;
import javax.swing.*;
public class UseJTableAndJTree extends JFrame {
public UseJTableAndJTree() {
String[] columnNames = { "Product", "Number of Boxes", "Price" };
Object[][] data = { { "Apples", new Integer(5), "5.00" },
{ "Oranges", new Integer(3), "6.00" },
{ "Pears", new Integer(2), "4.00" },
{ "Grapes", new Integer(3), "2.00" }, };
JTable jtable = new JTable(data, columnNames);//JTable是使用data和columnNames构成的:
jtable.setPreferredScrollableViewportSize(new Dimension(500, 500));//设置宽度和高度
this.getContentPane().add(jtable);
this.setTitle("运用表和树的例子");
}
public static void main(String a[]) {
UseJTableAndJTree ujt = new UseJTableAndJTree();
ujt.setSize(500, 500);
ujt.show();
}
}
我调了一下,觉得是那个 JScrollPane初始化问题,64~66行左右。改动下面三行代码
JScrollPane scrollPane = new JScrollPane(table); //直接用table初始化JScrollPane
scrollPane.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
// scrollPane.add(table); 此句注释或删掉。
我在做一个玩意,你的倒是启发我了
dm是model啊,怎么往model里加集合呢,应该加到data这个集合里
public void setTable(ResultSet rs) throws SQLException{
VectorString title=new VectorString();
title.add("姓名");
title.add("性别");
title.add("生日");
title.add("关系");
title.add("电子邮件");
title.add("所在学校");
title.add("家庭住址");
title.add("备注");
VectorVectorString data=new VectorVectorString();
VectorString d=new VectorString();
while(rs.next()){
d.add(rs.getString("name"));
d.add(rs.getString("sex"));
d.add(rs.getString("brithday"));
d.add(rs.getString("relatuion"));
d.add(rs.getString("email"));
d.add(rs.getString("school"));
d.add(rs.getString("adress"));
d.add(rs.getString("other"));
data.add(d);
d.clear();
}
DefaultTableModel dm=new DefaultTableModel(title,data);
table=new JTable(dm);
tabpane.setViewportView(table);
}
试试吧
我按照你的代码测试了一下,你上边的代码没有问题,能正常显示
应该不是这些代码的问题,你看看你的 a 和 colname 是否赋值正确
默认的排序,是点击表头,正序,再点击一下, 倒序
你需要怎么排序啊?
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流