上图
数据都填充进去了 但是 列名不显示 如何解? // 表格
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 有没有 多选 全选?求达人。

解决方案 »

  1.   


    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();
        }
    }
      

  2.   

    因为你那个jscrollpane并没有没有添加到某个容器了。
      

  3.   

    你的代码贴的不完整,不过也可以猜出你的原因:
    private JTable getTableDS();
    即是说,你在将表格添加到容器的时候,你返回的是JTable,虽然你在方法里面有
    JScrollPane scrollPane = new JScrollPane(ivtable);
    但是你最终还是直接将表格添加到容器里面去了,而不是将包含有表格的scrollPane添加到容器里面,那么你上面这句代码就等于没写,所以仍然没有表头
      

  4.   

    少了这句,表头加不进!
    DefaultTableModel model = (DefaultTableModel) ivtable.getModel();
    model.setColumnIdentifiers(hearders);
    答对了请给分,我急用!!!
    headers是一个数组,也就是你的String[] headers = { "XX编码", "XX编码", "XX编码", "XX编码", "XX编码","成本1", "成本2" };
      

  5.   

    大爷。
    我放到JPanel里了 但是也不行。 JScrollPane scrollPane = new JScrollPane(ivtable);
    scrollPane.setBorder(new BevelBorder(BevelBorder.LOWERED));
    add(scrollPane);
      

  6.   


    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);我这么加 也一样把。
      

  7.   


    你的不行啊。.. 难道是 我继承的是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;
    }
      

  8.   

    建议楼主把能够贴出来的JTable实现的代码完整贴出来,否则没办法帮你找原因调试,别人没法帮你的
      

  9.   

    行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);
    }
    }
    }
    基本就这些了。
      

  10.   


    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); 


      

  11.   

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

  12.   


    发现神奇的地方了。。
    不加上 setLayout(null); 就能出来了
    但是加上就不行了。
      

  13.   


    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) {
    }
    }
      

  14.   

    http://topic.csdn.net/u/20110815/19/f37b3e65-f39c-4966-bc5c-ad7fb2acb847.html?seed=1043603317&r=74968711#r_74968711去这个帖子里 有新图 和源码。