为什么下面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();
}
} 展开
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();
}
} 展开
1个回答
展开全部
这段代码问题好多的. 简单的罗列几个
比如单选按钮部分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);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询