Showing JTable Header Without Using JScrollPane java中的JTable不显示表头的原因

转载 2014年06月20日 23:31:24

Most tutorials and examples about JTable put it within a JScrollPane. If you do not place the JTable inside a JScrollPane, the header is not automatically shown.

//即标题1 标题2标题3标题4标题5再面板上显示出来
package train;

import java.awt.Dimension;
import java.awt.Rectangle;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Table1 {

	public static void main(String[] args) {
		new FrmMain();
	}
}

class FrmMain extends JFrame {
	JPanel contentPane;
	DefaultTableModel dtm = new DefaultTableModel();
	JTable tblStudent = new JTable(dtm);
	Vector data = new Vector();
	Vector<String> title = new Vector<String>();

	public FrmMain() {
		try {
			this.setVisible(true);
			setDefaultCloseOperation(EXIT_ON_CLOSE);
			jbInit();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	void jbInit() {
		Vector data1 = new Vector();
		data1.add("标题1的内容");
		data1.add("标题2的内容");
		data1.add("标题3的内容");
		data1.add("标题4的内容");
		data1.add("标题5的内容");
		data.add(data1);
		contentPane = (JPanel) getContentPane();
		setSize(new Dimension(700, 300));
		tblStudent.setBounds(new Rectangle(50, 65, 375, 300));
		contentPane.add(tblStudent);
		showTableData();
	}

	public void showTableData() {
		title.add("标题1");
		title.add("标题2");
		title.add("标题3");
		title.add("标题4");
		title.add("标题5");
		dtm.setDataVector(data, title);
	}

}

以上代码运行的结果:


However, JTable does create it. To show it, simply call JTable.getTableHeader() and add it to the Container. Just as importantly, you can continue to control the columns (such as changing column width and switching columns) from the header.

For example, you can easily put the header NORTH of a BorderLayout:

setLayout(new BorderLayout());
JTable table = new JTable(data, headerLabels);
add(table.getTableHeader(), BorderLayout.NORTH);
add(table, BorderLayout.CENTER);
Note that you could conceivably put the header in the SOUTH position. However, you can only have one header showing at a time. If you add it in both the NORTH and then the SOUTH location, it will only show up in the SOUTH location.
我的例子:

//即标题1 标题2标题3标题4标题5再面板上显示出来
package train;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Table1 {

	public static void main(String[] args) {
		new FrmMain();
	}
}

class FrmMain extends JFrame {
	JPanel contentPane;
	DefaultTableModel dtm = new DefaultTableModel();
	JTable tblStudent = new JTable(dtm);
	Vector data = new Vector();
	Vector<String> title = new Vector<String>();

	public FrmMain() {
		try {
			this.setVisible(true);
			setDefaultCloseOperation(EXIT_ON_CLOSE);
			jbInit();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	void jbInit() {
		Vector data1 = new Vector();
		data1.add("标题1的内容");
		data1.add("标题2的内容");
		data1.add("标题3的内容");
		data1.add("标题4的内容");
		data1.add("标题5的内容");
		data.add(data1);

		title.add("标题1");
		title.add("标题2");
		title.add("标题3");
		title.add("标题4");
		title.add("标题5");
		dtm.setDataVector(data, title);

		contentPane = (JPanel) getContentPane();
		setSize(new Dimension(700, 300));
		tblStudent.setBounds(new Rectangle(50, 65, 375, 300));
		contentPane.add(tblStudent);
		// notice the below codes.
		setLayout(new BorderLayout());
		add(tblStudent.getTableHeader(), BorderLayout.NORTH);
		add(tblStudent, BorderLayout.CENTER);
	}

}

运行之后显示的效果






Swing超基础学习总结——6、JTable和JScrollPane

Swing超基础学习总结最后一篇JTable初始化 初始化方法1 初始化方法2 添加删除数据 步骤1先获取model 步骤2执行相应操作 完整代码初始化方法1JTable初始化: 注:初始化方法很多...
  • zhengyikuangge
  • zhengyikuangge
  • 2016年08月29日 09:37
  • 1719

java之显示JTable表格数据

package test; import java.awt.*; import javax.swing.*; import java.sql.*; import java.util.*; impor...
  • qq_21478795
  • qq_21478795
  • 2016年06月03日 15:19
  • 3297

JTable学习总结之——如何设置表格透明篇

最近在自己做一个项目,因为涉及到的表格比较多,所以使用JTable也稍微频繁,而自然问题也就多了起来。之前有一篇文章是关于返回-1的问题,今天主要将一些对JTable的基本设置。 第一:透明。 ...
  • u010571913
  • u010571913
  • 2013年12月26日 13:41
  • 2601

Java Swing JTable 表格【13:为表格的表头指定文字说明】

表头指定说明性文字 当鼠标知道表头时,会出现说明性文字,实现方法和上一篇类似。 实现代码如下: package com.acconsys.swing.chapter14;import jav...
  • zp357252539
  • zp357252539
  • 2016年01月11日 22:54
  • 1268

java JTable设置多行表头

import javax.swing.*; import javax.swing.plaf.basic.BasicTableHeaderUI; import javax.swing.table.J...
  • h932075062
  • h932075062
  • 2013年03月04日 10:24
  • 1138

Java JTable设置(表头,字体,列宽,行宽,间隔色)

最学习了Java的表格JTable,感觉这个组件很好用,就写了一个表格的示例,给大家分享。 import java.awt.BorderLayout; import java.awt.Color; ...
  • MusicEnchanter
  • MusicEnchanter
  • 2017年11月10日 16:20
  • 155

Java Swing JTable 表格【3:创建表格,表头存在的设置】

创建表格有两种方式:一种是使用JScrollPane面板来添加表格,而另一种是使用中间容器直接添加表格,不过第二种需要将表格的表头放置到顶层窗口的最上层具体代码如下: package com.acco...
  • zp357252539
  • zp357252539
  • 2016年01月10日 08:26
  • 3462

Jtable表头换行显示

在jtable渲染表头时,由于有些表头字体较多,需要折行显示,但jtable没有自动折行的功能,所以自己实现表头的渲染器. 有两种方案实现表头的折行渲染: 1、渲染器继承自JTextArea,实现...
  • yuqinying112
  • yuqinying112
  • 2011年11月15日 13:47
  • 2475

JTable在JScrollPane中刷新数据的问题

今天下午遇到一个问题.当我从数据库从查询到数据想及时把数据更新到JScrollPane中时,不管是用updateUI()或者fireTableDataChanged()都不行.而且当我把窗口大小改变之...
  • xfhy_
  • xfhy_
  • 2016年08月24日 17:51
  • 2188

java取出mysql中数据,显示在jtable里面

  • 2017年07月23日 09:33
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Showing JTable Header Without Using JScrollPane java中的JTable不显示表头的原因
举报原因:
原因补充:

(最多只允许输入30个字)