为什么下面java代码jtable不显示表头?

回答是请说明白importjava.awt.event.*;importjavax.swing.*;importjava.text.SimpleDateFormat;im... 回答是请说明白
import java.awt.event.*;
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.spl.sql1;

public class Users extends JFrame implements ActionListener,Runnable{
static JFrame frm = new JFrame("选择");
static JRadioButton jrb1 = new JRadioButton("借书",true);
static JRadioButton jrb2 = new JRadioButton("还书",true);
static JRadioButton jrb3 = new JRadioButton("图书查询",true);
private JButton butexit;
private JLabel time = new JLabel();
private JTable table1=null;
SimpleDateFormat sd=new SimpleDateFormat("yyyy年MM月dd日 EEE HH:mm:ss");

Users(){
Vector data1 = new Vector();
data1.add("标题1的内容");
data1.add("标题2的内容");
data1.add("标题3的内容");
Vector<String> title = new Vector<String>();
DefaultTableModel model=new DefaultTableModel();
title.add("bookname");
title.add("author");
title.add("shoptime");
model.setDataVector(data1,title);

table1=new JTable(model);
time.setText(sd.format(new Date()));
butexit= new JButton("返回主页");
butexit.addActionListener(this);
frm.setLocation(500, 150);
frm.setSize(new Dimension(500, 550));
frm.setLayout(null);
ButtonGroup grp = new ButtonGroup();
jrb1.setBounds(20,80, 150, 20);
jrb2.setBounds(20,100, 150, 20);
jrb3.setBounds(20,120, 150, 20);
butexit.setBounds(120, 140, 100, 20);
time.setBounds(80, 30, 250, 20);
table1.setBounds(new Rectangle(20,800,400,200));
frm.add(jrb1);
frm.add(jrb2);
frm.add(jrb3);
frm.add(butexit);
frm.add(time);
frm.add(new JScrollPane(table1));
setLayout(new BorderLayout());
frm.add(table1, BorderLayout.CENTER);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}
public void run(){
while(true){
try{
Thread.sleep(1000);
}catch(InterruptedException e){}
time.setText(sd.format(new Date()));

}
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==butexit){
frm.setVisible(false);
new Login();
}
}
public static void main(String args[]){
new Thread(new Users()).start();

}
}
展开
 我来答
雪飞潇潇
2017-06-24 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:868万
展开全部

这段代码问题好多的. 简单的罗列几个

比如单选按钮部分1

static JFrame frm = new JFrame("选择");
static JRadioButton jrb1 = new JRadioButton("借书", true);//默认一个为true表示选中就好了
static JRadioButton jrb2 = new JRadioButton("还书", false);//设置为false
static JRadioButton jrb3 = new JRadioButton("图书查询", false);

单选部分2

		grp.add(jrb1);grp.add(jrb2);grp.add(jrb3);

表格部分

注意,每一行数据都要装进1个Vector里, 然后吧每一行的Vector再放入一个Vector里

简单的修改后

import java.awt.event.*;
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Users extends JFrame implements ActionListener, Runnable {
static JFrame frm = new JFrame("选择");
static JRadioButton jrb1 = new JRadioButton("借书", true);
static JRadioButton jrb2 = new JRadioButton("还书", false);
static JRadioButton jrb3 = new JRadioButton("图书查询", false);
private JButton butexit;
private JLabel time = new JLabel();
private JTable table1 = null;
SimpleDateFormat sd = new SimpleDateFormat("yyyy年MM月dd日 EEE HH:mm:ss");

Users() {
Vector<String> data1 = new Vector<String>();// 第一行的数据
data1.add("标题1的内容1");
data1.add("标题2的内容1");
data1.add("标题3的内容1");

Vector<String> data2 = new Vector<String>();// 第二行的数据
data2.add("标题1的内容2");
data2.add("标题2的内容2");
data2.add("标题3的内容2");

// 表格数据部分, 应该是一个Vector 里面存放了很多的Vector ,一个Vector代表一行数据
Vector<Vector<String>> allData = new Vector<Vector<String>>();
allData.add(data1);
allData.add(data2);

//表格标题就一个Vector就好了
Vector<String> title = new Vector<String>();
title.add("bookname");
title.add("author");
title.add("shoptime");
DefaultTableModel model = new DefaultTableModel();

model.setDataVector(allData, title);

table1 = new JTable(model);
time.setText(sd.format(new Date()));
butexit = new JButton("返回主页");
butexit.addActionListener(this);
frm.setLocation(500, 150);
frm.setSize(new Dimension(500, 550));
// frm.setLayout(null);// 建议不要使用绝对布局 , 你的布局非常混乱,建议重新好好编排
ButtonGroup grp = new ButtonGroup();
jrb1.setBounds(20, 80, 150, 20);
jrb2.setBounds(20, 100, 150, 20);
jrb3.setBounds(20, 120, 150, 20);
grp.add(jrb1);
grp.add(jrb2);
grp.add(jrb3);

butexit.setBounds(120, 140, 100, 20);
time.setBounds(80, 80, 250, 20);
table1.setBounds(new Rectangle(20, 800, 400, 200));
frm.add(jrb1);
frm.add(jrb2);
frm.add(jrb3);
frm.add(butexit);
frm.add(time);
frm.add(new JScrollPane(table1));
// frm.add(table1, BorderLayout.CENTER);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}

public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
time.setText(sd.format(new Date()));

}
}

public void actionPerformed(ActionEvent e) {
if (e.getSource() == butexit) {
frm.setVisible(false);
new Login();
}
}

public static void main(String args[]) {
new Thread(new Users()).start();

}
}
追问
请问,我原来的程序里不显示表头的原因是什么??
追答

0分悬赏的问题 ,  都写这么仔细了,  你好好看看吧

主要问题: 参数错误导致

你的代码 ,关于表格上的错误,主要是第一个参数出错

model.setDataVector(data1, title);

//第一个参数是Vector<String>: 一个列表 里面有很多的String 元素

正确的代码

model.setDataVector(allData, title);

//第一个参数是Vector<Vector<String>>  1个列表,里面还有很多列表(代表每一行的数据),每个列表里还有很多String元素

其他问题

frm.add(new JScrollPane(table1)); //这句加入到了滚动面板就好了

// frm.add(table1, BorderLayout.CENTER);//不要这句

  Vector<String> data1 = new Vector<String>();// 第一行的数据
        Vector<String> data2 = new Vector<String>();// 第二行的数据

        // 表格数据部分, 应该是一个Vector 里面存放了很多的Vector ,一个Vector代表一行数据
        Vector<Vector<String>> allData = new Vector<Vector<String>>();
        allData.add(data1);
        allData.add(data2);
 
        //表格标题就一个Vector就好了
        Vector<String> title = new Vector<String>();
        title.add("bookname");
        title.add("author");
        title.add("shoptime");
        DefaultTableModel model = new DefaultTableModel();
 
        model.setDataVector(allData, title);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式