java表为什么没有表头,为什么下面java代码jtable不显示表头
大家好,感谢邀请,今天来为大家分享一下java表为什么没有表头的问题,以及和为什么下面java代码jtable不显示表头的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
为什么下面java代码jtable不显示表头
这段代码问题好多的.简单的罗列几个
比如单选按钮部分1
staticJFramefrm=newJFrame("选择");
staticJRadioButtonjrb1=newJRadioButton("借书",true);//默认一个为true表示选中就好了
staticJRadioButtonjrb2=newJRadioButton("还书",false);//设置为false
staticJRadioButtonjrb3=newJRadioButton("图书查询",false);
单选部分2
grp.add(jrb1);grp.add(jrb2);grp.add(jrb3);
表格部分
注意,每一行数据都要装进1个Vector里,然后吧每一行的Vector再放入一个Vector里
简单的修改后
importjava.awt.event.*;
importjavax.swing.*;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.Vector;
importjava.awt.event.ActionListener;
importjavax.swing.*;
importjavax.swing.table.DefaultTableModel;
importjava.awt.Dimension;
importjava.awt.BorderLayout;
importjava.awt.FlowLayout;
importjava.awt.Rectangle;
importjava.text.SimpleDateFormat;
importjava.util.Date;
publicclassUsersextendsJFrameimplementsActionListener,Runnable{
staticJFramefrm=newJFrame("选择");
staticJRadioButtonjrb1=newJRadioButton("借书",true);
staticJRadioButtonjrb2=newJRadioButton("还书",false);
staticJRadioButtonjrb3=newJRadioButton("图书查询",false);
privateJButtonbutexit;
privateJLabeltime=newJLabel();
privateJTabletable1=null;
SimpleDateFormatsd=newSimpleDateFormat("yyyy年MM月dd日EEEHH:mm:ss");
Users(){
Vector<String>data1=newVector<String>();//第一行的数据
data1.add("标题1的内容1");
data1.add("标题2的内容1");
data1.add("标题3的内容1");
Vector<String>data2=newVector<String>();//第二行的数据
data2.add("标题1的内容2");
data2.add("标题2的内容2");
data2.add("标题3的内容2");
//表格数据部分,应该是一个Vector里面存放了很多的Vector,一个Vector代表一行数据
Vector<Vector<String>>allData=newVector<Vector<String>>();
allData.add(data1);
allData.add(data2);
//表格标题就一个Vector就好了
Vector<String>title=newVector<String>();
title.add("bookname");
title.add("author");
title.add("shoptime");
DefaultTableModelmodel=newDefaultTableModel();
model.setDataVector(allData,title);
table1=newJTable(model);
time.setText(sd.format(newDate()));
butexit=newJButton("返回主页");
butexit.addActionListener(this);
frm.setLocation(500,150);
frm.setSize(newDimension(500,550));
//frm.setLayout(null);//建议不要使用绝对布局,你的布局非常混乱,建议重新好好编排
ButtonGroupgrp=newButtonGroup();
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(newRectangle(20,800,400,200));
frm.add(jrb1);
frm.add(jrb2);
frm.add(jrb3);
frm.add(butexit);
frm.add(time);
frm.add(newJScrollPane(table1));
//frm.add(table1,BorderLayout.CENTER);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}
publicvoidrun(){
while(true){
try{
Thread.sleep(1000);
}catch(InterruptedExceptione){
}
time.setText(sd.format(newDate()));
}
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==butexit){
frm.setVisible(false);
newLogin();
}
}
publicstaticvoidmain(Stringargs[]){
newThread(newUsers()).start();
}
}
Java 实现多表头表格
哥们我很同情你,当初我为了实现多表头表格查遍了各种网页,结果别人给出的实例要么不符合要求,要么太过复杂,最后还是自己摸索出来的。不知道你要的东西是不是下面这种形式的。如果是请回个话,我再把代码贴出来。前些天给人回答问题后老是有人理也不理直到问题过期,一点诚意都没有。
简单点说就是要设置表头的UI,下面是我以前程序中的一个类,带滚动条
package表格;
importjavax.swing.*;
importjavax.swing.plaf.basic.BasicTableHeaderUI;
importjavax.swing.table.JTableHeader;
importjava.awt.*;
/************************************************************
*仓储(一日游、普通客户)操作的表格。
*@author胡海波
*
*/
publicclassStoreTableextendsJTable{
publicStoreTable(){
super(0,13);
this.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
this.getTableHeader().setUI(newUI());
}
//表头绘制器*********************************************************************
privateclassUIextendsBasicTableHeaderUI{
privateJTableHeaderheader;
publicvoidpaint(Graphicsg,JComponentc){
header=(JTableHeader)c;
getTableHeader().setPreferredSize(newDimension(StoreTable.this.getWidth(),45));//设置表头大小。横坐标必须足够大,
//否则会出现绘制不完全以及闪烁现象
//分类
JLabellabel=getLabel("分类");
rendererPane.paintComponent(g,label,header,0,0,getWidth(0),45,true);
//到货日期
label=getLabel("到货日期");
rendererPane.paintComponent(g,label,header,getX(1),0,getWidth(1),45,true);
//送货日期
label=getLabel("送货日期");
rendererPane.paintComponent(g,label,header,getX(2),0,getWidth(2),45,true);
//收款代理
label=getLabel("收款代理");
rendererPane.paintComponent(g,label,header,getX(3),0,getWidth(3),45,true);
//客户**************************************************************************
label=getLabel("客户");
rendererPane.paintComponent(g,label,header,getX(4),0,getWidth(4)+getWidth(5),30,true);
label=getLabel("上游");
rendererPane.paintComponent(g,label,header,getX(4),30,getWidth(4),15,true);
label=getLabel("下游");
rendererPane.paintComponent(g,label,header,getX(5),30,getWidth(5),15,true);
//报关单号**********************************************************************
label=getLabel("报关单号");
rendererPane.paintComponent(g,label,header,getX(6),0,getX(10)-getX(6),15,true);
label=getLabel("上游");
rendererPane.paintComponent(g,label,header,getX(6),15,getWidth(6)+getWidth(7),15,true);
label=getLabel("下游");
rendererPane.paintComponent(g,label,header,getX(8),15,getWidth(8)+getWidth(9),15,true);
label=getLabel("进口");
rendererPane.paintComponent(g,label,header,getX(6),30,getWidth(6),15,true);
label=getLabel("出口");
rendererPane.paintComponent(g,label,header,getX(7),30,getWidth(7),15,true);
label=getLabel("进口");
rendererPane.paintComponent(g,label,header,getX(8),30,getWidth(8),15,true);
label=getLabel("出口");
rendererPane.paintComponent(g,label,header,getX(9),30,getWidth(9),15,true);
//业务员
label=getLabel("业务员");
rendererPane.paintComponent(g,label,header,getX(10),0,getWidth(10),45,true);
//操作员
label=getLabel("操作员");
rendererPane.paintComponent(g,label,header,getX(11),0,getWidth(11),45,true);
//审核人
label=getLabel("审核人");
rendererPane.paintComponent(g,label,header,getX(12),0,getWidth(12),45,true);
}
//得到指定列的起始坐标
privateintgetX(intcolumn){
intx=0;
for(inti=0;i<column;i++)
x+=header.getColumnModel().getColumn(i).getWidth();
returnx;
}
//得到指定列的宽度
privateintgetWidth(intcolumn){
returnheader.getColumnModel().getColumn(column).getWidth();
}
//得到具有指定文本的标签
privateJLabelgetLabel(Stringtext){
JLabellabel=newJLabel(text,JLabel.CENTER);
label.setBorder(UIManager.getBorder("TableHeader.cellBorder"));
returnlabel;
}
}
publicstaticvoidmain(String[]args){
JFrameframe=newJFrame();
frame.setSize(800,300);
frame.setDefaultCloseOperation(3);
frame.getContentPane().add(newJScrollPane(newStoreTable()));
frame.setVisible(true);
}
}
java中如何实现表格的多表头显示
首先声明这些内容都是借鉴来的稍微改动了一下主要就是三个应用类ColumnGroup GroupableTableHeader GroupableTableHeaderU和一个示例类GroupableHeaderExample ColumnGroup类主要负责多表头的构建 import java awt Component;import java awt Dimension;import java util Enumeration;import java util Vector;import javax swing JLabel;import javax swing JTable;import javax swing UIManager;import javax swing table DefaultTableCellRenderer;import javax swing table JTableHeader;import javax swing table TableCellRenderer;import javax swing table TableColumn;public class ColumnGroup{protected TableCellRenderer renderer;protected Vector v;protected String text;protected int margin=;public ColumnGroup(String text){this(null text);}public ColumnGroup(TableCellRenderer renderer String text){if(renderer== null){this renderer= new DefaultTableCellRenderer(){public Component getTableCellRendererComponent(JTable table Object value boolean isSelected boolean hasFocus int row int column){JTableHeader header= table getTableHeader();if(header!= null){setForeground(header getForeground());setBackground(header getBackground());setFont(header getFont());}setHorizontalAlignment(JLabel CENTER);this setText((value== null)?: value toString());setBorder(UIManager getBorder( TableHeader cellBorder));return this;}};} else{this renderer= renderer;}this text= text;v= new Vector();}/***@param obj*TableColumn or ColumnGroup*/public void add(Object obj){if(obj== null){return;}v addElement(obj);}/***@param c*TableColumn*@param v*ColumnGroups*/public Vector getColumnGroups(TableColumn c Vector g){g addElement(this);if(ntains(c))return g;Enumeration enumeration= v elements();while(enumeration hasMoreElements()){Object obj= enumeration nextElement();if(obj instanceof ColumnGroup){Vector groups=(Vector)((ColumnGroup) obj) getColumnGroups(c(Vector) g clone());if(groups!= null)return groups;}}return null;}public TableCellRenderer getHeaderRenderer(){return renderer;}public Object getHeaderValue(){return text;}public int getSize(){return v== null?: v size();}public Dimension getSize(JTable table){Component p= renderer getTableCellRendererComponent(table getHeaderValue() false false);int height= p getPreferredSize() height;int width=;Enumeration enumeration= v elements();while(enumeration hasMoreElements()){Object obj= enumeration nextElement();if(obj instanceof TableColumn){TableColumn aColumn=(TableColumn) obj;width+= aColumn getWidth();width+= margin;} else{width+=((ColumnGroup) obj) getSize(table) width;}}return new Dimension(width height);}/****创建日期:(::)**@return java lang String*/public java lang String getText(){return text;}/***列表头中删除Column创建日期:(::)*/public boolean removeColumn(ColumnGroup ptg TableColumn tc){boolean retFlag= false;if(tc!= null){for(int i=; i< ptg.v.size(); i++){Object tmpObj= ptg.v.get(i);if(tmpObj instanceof ColumnGroup){retFlag= removeColumn((ColumnGroup) tmpObj, tc);//如果找到返回if(retFlag)break;} else if(tmpObj instanceof TableColumn){//判断是否查找的对象if(tmpObj== tc){ptg.v.remove(i);retFlag= true;break;}}}}return retFlag;}/***列表头中删除ColumnGrp删除返回true,否则返回false;创建日期:(2002-9-25 15:49:00)*/public boolean removeColumnGrp(ColumnGroup ptg, ColumnGroup tg){boolean retFlag= false;if(tg!= null){for(int i= 0; i< ptg.v.size(); i++){Object tmpObj= ptg.v.get(i);if(tmpObj instanceof ColumnGroup){//判断是否查找的对象if(tmpObj== tg){ptg.v.remove(i);retFlag= true;break;} else{retFlag= removeColumnGrp((ColumnGroup) tmpObj, tg);//如果找到返回if(retFlag)break;}} else if(tmpObj instanceof TableColumn){break;}}}return retFlag;}public void setColumnMargin(int margin){this.margin= margin;Enumeration enumeration= v.elements();while(enumeration.hasMoreElements()){Object obj= enumeration.nextElement();if(obj instanceof ColumnGroup){((ColumnGroup) obj).setColumnMargin(margin);}}}public void setHeaderRenderer(TableCellRenderer renderer){if(renderer!= null){this.renderer= renderer;}}/****创建日期:(2003-7-14 10:53:26)**@param newText*java.lang.String*/public void setText(java.lang.String newText){text= newText;}} 2、GroupableHeader继承自JTableHeader,为多表头结构的管理者 import java.util.Enumeration;import java.util.Vector;import javax.swing.table.JTableHeader;import javax.swing.table.TableColumn;import javax.swing.table.TableColumnModel;/*** GroupableTableHeader*@author flyx*/public class GroupableTableHeader extends JTableHeader{private static final String uiClassID="GroupableTableHeaderUI";protected Vector columnGroups= null;public GroupableTableHeader(TableColumnModel model){super(model);setUI(new GroupableTableHeaderUI());setReorderingAllowed(false);setRequestFocusEnabled(false);}public void addColumnGroup(ColumnGroup g){if(columnGroups== null){columnGroups= new Vector();}columnGroups.addElement(g);}/****创建日期:(2001-8-31 15:54:29)*/public void clearColumnGroups(){columnGroups= null;}public ColumnGroup[] getColumnGroups(){ColumnGroup[] retg=null;if(columnGroups.size()>0){retg=new ColumnGroup[columnGroups.size()];pyInto(retg);}return retg;}public Enumeration getColumnGroups(TableColumn col){if(columnGroups== null)return null;Enumeration enum= columnGroups.elements();while(enum.hasMoreElements()){ColumnGroup cGroup=(ColumnGroup) enum.nextElement();Vector v_ret=(Vector) cGroup.getColumnGroups(col, new Vector());if(v_ret!= null){return v_ret.elements();}}return null;}/*** Identifies whether or not this ponent can receive the focus.* A disabled button, for example, would return false. lishixinzhi/Article/program/Java/JSP/201311/19359
好了,文章到这里就结束啦,如果本次分享的java表为什么没有表头和为什么下面java代码jtable不显示表头问题对您有所帮助,还望关注下本站哦!