[求达人]为什么我的JTable不显示单头(就是列名) 有图有真相

帅员外 2011-08-15 09:46:50

上图
数据都填充进去了 但是 列名不显示 如何解?

// 表格
private JTable ivtable;

private JTable getTableDS() {
if (ivtable == null) {
String[] headers = { "XX编码", "XX编码", "XX编码", "XX编码", "XX编码",
"成本1", "成本2" };
Object[][] cellData = null;
DefaultTableModel model = new DefaultTableModel(cellData, headers) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
ivtable = new JTable(model);
ivtable.setName("TableDS");
ivtable.setBounds(39, 115, 750, 290);
ivtable.setRowHeight(20);
ivtable.setSelectionMode(0);
JScrollPane scrollPane = new JScrollPane(ivtable);
}
return ivtable;
}


我也加了
JScrollPane scrollPane = new JScrollPane(ivtable);

为什么 还不显示 列头?

还有java的Jtable 有没有 多选 全选?

求达人。
...全文
640 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
softroad 2011-08-15
  • 打赏
  • 举报
回复
给你代码了,你不用?
帅员外 2011-08-15
  • 打赏
  • 举报
回复
有人没人。
帅员外 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wenziming54 的回复:]
少了这句,表头加不进!

Java code
DefaultTableModel model = (DefaultTableModel) ivtable.getModel();
model.setColumnIdentifiers(hearders);

答对了请给分,我急用!!!
headers是一个数组,也就是你的String[] headers = { "XX编码", "XX编……
[/Quote]

String[] headers = { "公司编码", "部门编码", "存货编码", "客户编码", "结算方式编码",
"成本1", "成本2" };
Object[][] cellData = null;
DefaultTableModel model = new DefaultTableModel(cellData, headers) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
ivtable = new JTable(model);

我这么加 也一样把。
帅员外 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wenbodong 的回复:]
你的代码贴的不完整,不过也可以猜出你的原因:
private JTable getTableDS();
即是说,你在将表格添加到容器的时候,你返回的是JTable,虽然你在方法里面有
JScrollPane scrollPane = new JScrollPane(ivtable);
但是你最终还是直接将表格添加到容器里面去了,而不是将包含有表格的scrollPane添加到容器里面,那么你……
[/Quote]
大爷。
我放到JPanel里了 但是也不行。

JScrollPane scrollPane = new JScrollPane(ivtable);
scrollPane.setBorder(new BevelBorder(BevelBorder.LOWERED));
add(scrollPane);
wenziming54 2011-08-15
  • 打赏
  • 举报
回复
少了这句,表头加不进!
DefaultTableModel model = (DefaultTableModel) ivtable.getModel();
model.setColumnIdentifiers(hearders);
答对了请给分,我急用!!!
headers是一个数组,也就是你的String[] headers = { "XX编码", "XX编码", "XX编码", "XX编码", "XX编码","成本1", "成本2" };
wenbodong 2011-08-15
  • 打赏
  • 举报
回复
你的代码贴的不完整,不过也可以猜出你的原因:
private JTable getTableDS();
即是说,你在将表格添加到容器的时候,你返回的是JTable,虽然你在方法里面有
JScrollPane scrollPane = new JScrollPane(ivtable);
但是你最终还是直接将表格添加到容器里面去了,而不是将包含有表格的scrollPane添加到容器里面,那么你上面这句代码就等于没写,所以仍然没有表头
huntor 2011-08-15
  • 打赏
  • 举报
回复
因为你那个jscrollpane并没有没有添加到某个容器了。
softroad 2011-08-15
  • 打赏
  • 举报
回复

import javax.swing.*;
import javax.swing.table.*;
import javax.swing.border.*;

import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.Color;

public class TableExample4 {

public TableExample4() {
JFrame frame = new JFrame("Table");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}});

// Take the dummy data from SwingSet.
final String[] names = {"First Name", "Last Name", "Favorite Color",
"Favorite Number", "Vegetarian"};
final Object[][] data = {
{"Mark", "Andrews", "Red", new Integer(2), Boolean.TRUE},
{"Tom", "Ball", "Blue", new Integer(99), Boolean.FALSE},
{"Arnaud", "Weber", "Green", new Integer(44), Boolean.FALSE}
};

// Create a model of the data.
TableModel dataModel = new AbstractTableModel() {
// These methods always need to be implemented.
public int getColumnCount() { return names.length; }
public int getRowCount() { return data.length;}
public Object getValueAt(int row, int col) {return data[row][col];}

// The default implementations of these methods in
// AbstractTableModel would work, but we can refine them.
public String getColumnName(int column) {return names[column];}
public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
public boolean isCellEditable(int row, int col) {return true;}
public void setValueAt(Object aValue, int row, int column) {
System.out.println("Setting value to: " + aValue);
data[row][column] = aValue;
}
};

// Create the table
JTable tableView = new JTable(dataModel);
// Turn off auto-resizing so that we can set column sizes programmatically.
// In this mode, all columns will get their preferred widths, as set blow.
tableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

// Finish setting up the table.
JScrollPane scrollpane = new JScrollPane(tableView);
scrollpane.setBorder(new BevelBorder(BevelBorder.LOWERED));
scrollpane.setPreferredSize(new Dimension(430, 200));
frame.getContentPane().add(scrollpane);
frame.pack();
frame.setVisible(true);
}

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

帅员外 2011-08-15
  • 打赏
  • 举报
回复
谁能帮帮我。
帅员外 2011-08-15
  • 打赏
  • 举报
回复

package nc.ui.rt.rt01;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.DefaultTableModel;

public class ImportInvCostUI extends JPanel implements FocusListener {
class IvjEventHandler implements ActionListener {

final ImportInvCostUI this$0;

public void actionPerformed(ActionEvent e) {

}

IvjEventHandler() {
this$0 = ImportInvCostUI.this;
}
}

IvjEventHandler ivjEventHandler;

private JLabel ivjJLabelSelect;

private JLabel ivjJLabelTitle;

private JPanel ivjJPanel1;

private JTextArea ivjSrcFilePath;

private JButton ivjBtnReset;

private JButton ivjBtnBrowseSrc;

private JButton ivjBtnImport;

private String m_sysDate;

private File file = null;
// 表格
private JTable ivtable;
// 滚动条
private JScrollPane scrollPane;

// 接口实现
// private IRt01 irt01;
// private IRt01 getFn_itf() {
// if (irt01 == null)
// irt01 = (IRt01) NCLocator.getInstance().lookup(
// IRt01.class.getName());
// return irt01;
// }
public ImportInvCostUI() {

ivjBtnBrowseSrc = null;
ivjEventHandler = new IvjEventHandler();
ivjJLabelSelect = null;
ivjJLabelTitle = null;
ivjJPanel1 = null;
ivjSrcFilePath = null;
ivjBtnReset = null;
ivjBtnImport = null;
m_sysDate = null;
ivtable = null;
scrollPane = null;
initialize();
// System.out.println((new StringBJlder("<<<<<<<<<<<<<<<<<")).append(
// m_sysDate).append(">>>>>>>>>>>>>>").toString());
}

private JTable getTableDS() {
if (ivtable == null) {
String[] headers = { "公司编码", "部门编码", "存货编码", "客户编码", "结算方式编码",
"成本1", "成本2" };
Object[][] cellData = null;
DefaultTableModel model = new DefaultTableModel(cellData, headers) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
ivtable = new JTable(model);
ivtable.setName("TableDS");
ivtable.setBounds(39, 115, 750, 290);
ivtable.setRowHeight(20);
ivtable.setSelectionMode(0);
// ivtable.setPreferredScrollableViewportSize(new
// Dimension(550,30));
}
return ivtable;
}

private JButton getBtnBrowseSrc() {
if (ivjBtnBrowseSrc == null) {
try {
ivjBtnBrowseSrc = new JButton();
ivjBtnBrowseSrc.setName("BtnBrowseSrc");
ivjBtnBrowseSrc.setText("浏览");
ivjBtnBrowseSrc.setBounds(617, 82, 80, 22);
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjBtnBrowseSrc;
}

private JLabel getJLabelSelect() {
if (ivjJLabelSelect == null) {
try {
ivjJLabelSelect = new JLabel();
ivjJLabelSelect.setName("JLabelSelect");
ivjJLabelSelect.setFont(new Font("dialog", 1, 12));
ivjJLabelSelect.setText("选择文件");
ivjJLabelSelect.setBounds(39, 78, 69, 19);
ivjJLabelSelect.setForeground(new Color(102, 102, 153));
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjJLabelSelect;
}

private JLabel getJLabelTitle() {
if (ivjJLabelTitle == null) {
try {
ivjJLabelTitle = new JLabel();
ivjJLabelTitle.setName("JLabelTitle");
ivjJLabelTitle.setFont(new Font("dialog", 1, 22));
ivjJLabelTitle.setText("上传Excel存货成本");
ivjJLabelTitle.setBounds(248, 44, 307, 21);
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjJLabelTitle;
}

private JPanel getJPanel1() {
if (ivjJPanel1 == null) {
try {
ivjJPanel1 = new JPanel();
ivjJPanel1.setName("JPanel1");
ivjJPanel1.setLayout(null);
ivjJPanel1.setBounds(-10, -1, 784, 1);
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjJPanel1;
}

private JTextArea getSrcFilePath() {
if (ivjSrcFilePath == null) {
try {
ivjSrcFilePath = new JTextArea();
ivjSrcFilePath.setName("srcFilePath");
ivjSrcFilePath.setBounds(116, 80, 475, 24);
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjSrcFilePath;
}

public String getTitle() {
return "存货成本导入";
}

private void handleException(Throwable exception) {
System.out.println("--------- 未捕捉到的异常 ---------");
exception.printStackTrace(System.out);
}

// 初始化监听
private void initConnections() throws Exception {
getBtnBrowseSrc().addActionListener(ivjEventHandler);
getBtnReset().addActionListener(ivjEventHandler);
getBtnImport().addActionListener(ivjEventHandler);
}

private void initialize() {
try {
setName("EAIDataTrafficJ");
setLayout(null);
setSize(839, 464);
add(getJPanel1(), getJPanel1().getName());
add(getJLabelSelect(), getJLabelSelect().getName());
add(getSrcFilePath(), getSrcFilePath().getName());
add(getBtnBrowseSrc(), getBtnBrowseSrc().getName());
add(getJLabelTitle(), getJLabelTitle().getName());
add(getBtnReset(), getBtnReset().getName());
add(getBtnImport(), getBtnImport().getName());
add(getTableDS(), getTableDS().getName());
add(getJScrollPane(), getJScrollPane().getName());
initConnections();
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}

private JScrollPane getJScrollPane() {
if (scrollPane == null) {
scrollPane = new JScrollPane(getTableDS());
// scrollPane.getViewport().add(ivtable);
// scrollPane.setBorder(new BevelBorder(BevelBorder.));
scrollPane.setName("scrollPane");
}
return scrollPane;
}

// public static void main(String args[]) {
// try {
// JFrame frame = new JFrame();
// importsaleorderJ EAIDataTrafficJ = new importsaleorderJ();
// frame.setContentPane(EAIDataTrafficJ);
// frame.setSize(EAIDataTrafficJ.getSize());
// frame.addWindowListener(new WindowAdapter() {
//
// public void windowClosing(WindowEvent e) {
// System.exit(0);
// }
//
// });
// frame.show();
// Insets insets = frame.getInsets();
// frame.setSize(frame.getWidth() + insets.left + insets.right, frame
// .getHeight()
// + insets.top + insets.bottom);
// frame.setVisible(true);
// } catch (Throwable exception) {
// System.err.println("nc.J.pub.ToftPanel 的 main() 中发生异常");
// exception.printStackTrace(System.out);
// }
// }

private JPanel getClientJ() {
return this;
}

private JButton getBtnReset() {
if (ivjBtnReset == null) {
try {
ivjBtnReset = new JButton();
ivjBtnReset.setName("BtnReset");
ivjBtnReset.setText("重置");
ivjBtnReset.setBounds(137, 469, 116, 25);
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjBtnReset;
}

private JButton getBtnImport() {
if (ivjBtnImport == null) {
try {
ivjBtnImport = new JButton();
ivjBtnImport.setName("BtnImport");
ivjBtnImport.setText("导入");
ivjBtnImport.setBounds(504, 469, 116, 25);
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjBtnImport;
}

/**
* Excel文件过滤类
*
* @author jieely
*
*/
class ExcelFileFilter extends javax.swing.filechooser.FileFilter {
public boolean accept(File file) {
if (file.isDirectory()
|| file.getPath().toLowerCase().endsWith(".xls"))
return true;
else
return false;
}

public String getDescription() {
return "数据文件(.xls)";
}
}

public void focusGained(FocusEvent focusevent) {
}

public void focusLost(FocusEvent focusevent) {
}
}

帅员外 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 ioe_gaoyong 的回复:]

你贴的代码拷贝到IDE里面大量的错误,怎么让别人帮你,代码里面引用到的很多方法没有贴出来,还有main入口在哪里?
[/Quote]

发现神奇的地方了。。
不加上 setLayout(null); 就能出来了
但是加上就不行了。
风尘中国 2011-08-15
  • 打赏
  • 举报
回复
你贴的代码拷贝到IDE里面大量的错误,怎么让别人帮你,代码里面引用到的很多方法没有贴出来,还有main入口在哪里?
帅员外 2011-08-15
  • 打赏
  • 举报
回复

public class ImportInvCostUI extends UIPanel implements FocusListener {
class IvjEventHandler implements ActionListener {

final ImportInvCostUI this$0;

public void actionPerformed(ActionEvent e) {
// 浏览
if (e.getSource() == getBtnBrowseSrc()) {
onBtnBrowseSrc(e);
}
// 重置
if (e.getSource() == getBtnReset()) {
onBtnReset(e);
}
// 执行
if (e.getSource() == getBtnImport()) {
onBtnImport(e);
}
}

IvjEventHandler() {
this$0 = ImportInvCostUI.this;
}
}
// 表格
private JTable ivtable;
private JTable getTableDS() {
if (ivtable == null) {
String[] headers = { "DD编码 ", "RR编码 ", "QQ编码 ", "FG编码 ", "DSSS编码 ",
"成本1 ", "成本2 " };
Object[][] cellData = null;
DefaultTableModel model = new DefaultTableModel(cellData, headers) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
ivtable = new JTable(model);
ivtable.setName( "TableDS ");
ivtable.setBounds(39, 115, 750, 290);
ivtable.setRowHeight(20);
ivtable.setSelectionMode(0);

JScrollPane scrollPane = new JScrollPane(ivtable);
scrollPane.setBorder(new BevelBorder(BevelBorder.LOWERED));
add(scrollPane);
}
return ivtable;
}
public ImportInvCostUI() {
initialize();
}
private void initialize() {
try {
setName( "EAIDataTrafficUI ");
setLayout(null);
setSize(738, 464);
add(getJPanel1(), getJPanel1().getName());
add(getJLabelSelect(), getJLabelSelect().getName());
add(getSrcFilePath(), getSrcFilePath().getName());
add(getBtnBrowseSrc(), getBtnBrowseSrc().getName());
add(getJLabelTitle(), getJLabelTitle().getName());
add(getBtnReset(), getBtnReset().getName());
add(getBtnImport(), getBtnImport().getName());
add(getTableDS(), getTableDS().getName());
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
}

帅员外 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ioe_gaoyong 的回复:]
建议楼主把能够贴出来的JTable实现的代码完整贴出来,否则没办法帮你找原因调试,别人没法帮你的
[/Quote]


public class ImportInvCostUI extends UIPanel implements FocusListener {
class IvjEventHandler implements ActionListener {

final ImportInvCostUI this$0;

public void actionPerformed(ActionEvent e) {
// 浏览
if (e.getSource() == getBtnBrowseSrc()) {
onBtnBrowseSrc(e);
}
// 重置
if (e.getSource() == getBtnReset()) {
onBtnReset(e);
}
// 执行
if (e.getSource() == getBtnImport()) {
onBtnImport(e);
}
}

IvjEventHandler() {
this$0 = ImportInvCostUI.this;
}
}
// 表格
private JTable ivtable;
private JTable getTableDS() {
if (ivtable == null) {
String[] headers = { "DD编码", "RR编码", "QQ编码", "FG编码", "DSSS编码",
"成本1", "成本2" };
Object[][] cellData = null;
DefaultTableModel model = new DefaultTableModel(cellData, headers) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
ivtable = new JTable(model);
ivtable.setName("TableDS");
ivtable.setBounds(39, 115, 750, 290);
ivtable.setRowHeight(20);
ivtable.setSelectionMode(0);

JScrollPane scrollPane = new JScrollPane(ivtable);
scrollPane.setBorder(new BevelBorder(BevelBorder.LOWERED));
add(scrollPane);
}
return ivtable;
}
public ImportInvCostUI() {
initialize();
}
private void initialize() {
try {
setName("EAIDataTrafficUI");
setLayout(null);
setSize(738, 464);
add(getJPanel1(), getJPanel1().getName());
add(getJLabelSelect(), getJLabelSelect().getName());
add(getSrcFilePath(), getSrcFilePath().getName());
add(getBtnBrowseSrc(), getBtnBrowseSrc().getName());
add(getJLabelTitle(), getJLabelTitle().getName());
add(getBtnReset(), getBtnReset().getName());
add(getBtnImport(), getBtnImport().getName());
add(getTableDS(), getTableDS().getName());
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
}


基本就这些了。。。。
风尘中国 2011-08-15
  • 打赏
  • 举报
回复
建议楼主把能够贴出来的JTable实现的代码完整贴出来,否则没办法帮你找原因调试,别人没法帮你的
帅员外 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 softroad 的回复:]
给你代码了,你不用?
[/Quote]

你的不行啊。..

难道是 我继承的是JPanel的原因?

extends UIPanel?

private JTable getTableDS() {
if (ivtable == null) {
String[] headers = { "公司编码", "部门编码", "存货编码", "客户编码", "结算方式编码",
"成本1", "成本2" };
Object[][] cellData = null;
DefaultTableModel model = new DefaultTableModel(cellData, headers) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
ivtable = new JTable(model);
ivtable.setName("TableDS");
ivtable.setBounds(39, 115, 750, 290);
ivtable.setRowHeight(20);
ivtable.setSelectionMode(0);

JScrollPane scrollPane = new JScrollPane(ivtable);
scrollPane.setBorder(new BevelBorder(BevelBorder.LOWERED));
add(scrollPane);
}
return ivtable;
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧