当前位置: 代码迷 >> Java相关 >> jtable 列问题
  详细解决方案

jtable 列问题

热度:1030   发布时间:2013-09-16 11:22:23.0
jtable 列问题
需求:准备写一个jtable然后更改她的样式后续所有的table都继承这个jtable;
问题:展现出来的table无column列名称;
代码展现:
package gov.service.product.gfmis.ResultDialogModel;

import gov.service.common.dao.GeneralDAO;
import gov.service.common.util.Util;
import gov.service.product.gfmis.balance.ui.BalanceMainUI;
import gov.service.product.manager.ComponentManager;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.WindowEvent;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;

public class Test extends JTable{
   
    private static GeneralDAO dao = ComponentManager.generalDAO;
   

    public Test()
    {   
        JScrollPane jsp=new JScrollPane();
        jsp.setViewportView(this);
      
      table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        table.setRowHeight(20);
        table.setFont(new Font("微软儒雅",Font.PLAIN,14));
        
        int columnCount=table.getColumnModel().getColumnCount();
        System.out.println(columnCount);
        for(int i=0;i<columnCount;i++)
        {
            int width=table.getColumnModel().getColumn(i).getWidth();
            table.getColumnModel().getColumn(i).setPreferredWidth(width+20);
        }
        
        JTableHeader head=new JTableHeader();
        head.setFont(new Font("微软雅黑",Font.PLAIN,16));
        head.setPreferredSize(new Dimension(head.getWidth(),25));
         
        getModel();
    }
    protected void getModel() {
        ThreadGroup group = Thread.currentThread().getThreadGroup();// 获得当前线程所在线程组
        Thread[] threads = new Thread[group.activeCount()];// 使用数组保存活动状态的线程
        group.enumerate(threads);// 获得所有线程
        DefaultTableModel model = (DefaultTableModel) this.getModel(); // 获得表格模型
        model.setRowCount(0); // 清空表格模型中的数据
        model.setColumnIdentifiers(new Object[] { "线程ID", "线程名称", "优先级" }); // 定义表头
        for (Thread thread : threads) {// 增加行数据
            model.addRow(new Object[] { thread.getId(), thread.getName(), thread.getPriority() });
        }
        this.setModel(model);// 更新表格模型
    }
   
    public static void main(String[] args) {

        try {
            UIManager
                    .setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Throwable e) {
            e.printStackTrace();
        }

        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.setBounds(100, 100, 800, 300);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                JPanel content=new JPanel();
                content.add(new Test());
                frame.setContentPane(content);
                frame.setVisible(true);
                frame.setResizable(true);
            }
        });

    }

}

展现结果:见附件

搜索更多相关的解决方案: import  package  

----------------解决方案--------------------------------------------------------
debug找到关键代码,这样不好弄啊,这里面还引用了其他类,这想运行还要自己写其他类啊,你找出问题点对应的代码试试
----------------解决方案--------------------------------------------------------
int columnCount=table.getColumnModel().getColumnCount();
        System.out.println(columnCount);
这句代码,打印的值有吗
----------------解决方案--------------------------------------------------------
好难啊
----------------解决方案--------------------------------------------------------
回复 3楼 java小蚂蚁
这个是有值的,我在setModel()之后在获取model循环打印columnName都是可以的。可是显示的时候就是没有
----------------解决方案--------------------------------------------------------
回复 5楼 xioun
哪里有值的话,证明你设置成功了,显示的时候你调用get方法不会没有值啊,会不会是你调用的次序有问题,你的值,在哪设进去的,在哪显示的。你这里涉及多线程,你看下,是不是线程问题,调用次序
----------------解决方案--------------------------------------------------------
说实话,这代码没怎么看懂,总觉得有些乱,你main函数里面就一句话,怎么显示表格啊,
而且代码不全,
----------------解决方案--------------------------------------------------------
线程组已经不推荐用了,现在都用线程池,线程组容易引发很多问题。
----------------解决方案--------------------------------------------------------
  相关解决方案