精华内容
下载资源
问答
  • swing jTable 自定义单元格

    千次阅读 2011-03-19 15:07:00
    jTable 单元格 自定义 颜色 图片

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
    //主类
    @SuppressWarnings("unchecked")
    public class TryJTable extends JFrame
    {
        private static final long serialVersionUID = 1L;
        //创建自定义表格模型对象
        MyTableModel dtm=new MyTableModel();
        //创建JTable对象
        JTable jt=new JTable(dtm);
        //将JTable封装进滚动窗格
        JScrollPane jsp=new JScrollPane(jt);   
        //自定义的表格模型
        private class MyTableModel extends AbstractTableModel
        {
           
            private static final long serialVersionUID = 1L;
            //创建表示各个列类型的类型数组
            Class[] typeArray=
                  {Object.class,Double.class,Boolean.class,Icon.class,Color.class};
            //创建列标题字符串数组
            String[] head={"Object","Number","Boolean","Icon","Color"};
            //创建初始表格数据
            Object[][] data={{"这里是字符串1",new Integer(20),new Boolean(true),
                                new ImageIcon("D:/p1.gif "),Color.black},
                            {"这里是字符串2",new Double(12.34),new Boolean(false),
                            new ImageIcon("D:/p2.gif "),Color.darkGray},
                            {"这里是字符串3",new Integer(125),new Boolean(true),
                            new ImageIcon("D:/p3.gif"),Color.white}};
            //重写getColumnCount方法
            public int getColumnCount()
            {
                return head.length;
            }
            //重写getRowCount方法   
            public int getRowCount()
            {
                return data.length;
            }
            //重写getColumnName方法
            public String getColumnName(int col)
            {
                return head[col];
            }
            //重写getValueAt方法
            public Object getValueAt(int r,int c)
            {
                return data[r][c];
            }
            //重写getColumnClass方法
            public Class getColumnClass(int c)
            {
                return typeArray[c];
            }
            //重写isCellEditable方法
            public boolean isCellEditable(int r,int c)
            {
                return true;
            }
            //重写setValueAt方法
            public void setValueAt(Object value,int r,int c)
            {
                data[r][c]=value;
                //
                this.fireTableCellUpdated(r,c);
            }
        }
        //自定义的绘制器
        private class MyCellRendererForColorClass
                        extends JLabel implements TableCellRenderer
        {
            private static final long serialVersionUID = 1L;
            //定义构造器
            public MyCellRendererForColorClass ()
            {
                //设置标签为不透明状态
                this.setOpaque(true);
                //设置标签的文本对齐方式为居中
                this.setHorizontalAlignment(JLabel.CENTER);
            }
            //实现获取呈现控件的getTableCellRendererComponent方法
            public Component getTableCellRendererComponent(JTable table,Object value,
                               boolean isSelected,boolean hasFocus,int row,int column)
            {           
                //获取要呈现的颜色
                Color c=(Color)value;
                //根据参数value设置背景色
                this.setBackground(c);
                //设置前景色为背景色反色
                this.setForeground(new Color(255-c.getRed()
                                    ,255-c.getGreen(),255-c.getBlue()));
                //设置标签中显示RGB的值
                this.setText("["+c.getRed()+","+c.getGreen()+","+c.getBlue()+"]");
                //将自己返回
                return this;   
            }
        }   
        //声明Color类型的自定义编辑器
        class MyEditorForColorClass extends AbstractCellEditor
                implements TableCellEditor,ActionListener
        {
            private static final long serialVersionUID = 1L;
            //定义Color变量
            Color c;
            //定义对话框变量
            JDialog jd;
            //创建一个按扭
            JButton jb=new JButton();
            //创建JColorChooser对象
            JColorChooser jcc=new JColorChooser();
            //声明一个常量
            public static final String EDIT="edit";
            //定义构造器
            public MyEditorForColorClass()
            {
                //为按扭注册监听器
                jb.addActionListener(this);
                //设置此按扭的动作命令
                jb.setActionCommand(EDIT);
                //获取颜色选择器
                jd=JColorChooser.createDialog(jb,"选择颜色",true,jcc,this,null);
            }
            //实现actionPerformed方法
            public void actionPerformed(ActionEvent e)
            {
                //测试获得的动作命令是否等于EDIT常量
                if(e.getActionCommand().equals(EDIT))
                {
                    //设置按扭的背景颜色
                    jb.setBackground(c);
                    //设置前景色为背景色反色
                    jb.setForeground(new Color(255-c.getRed()
                                    ,255-c.getGreen(),255-c.getBlue()));
                    //设置按钮中显示RGB的值
                    jb.setText("["+c.getRed()+","+c.getGreen()+","+c.getBlue()+"]");               
                   
                    //设置颜色选择器的颜色
                    jcc.setColor(c);
                    //设置颜色选择器可见
                    jd.setVisible(true);
                    //通知所有监听器,以延迟方式创建事件对象
                    this.fireEditingStopped();           
                }
                else
                {
                    //获取颜色
                    c=jcc.getColor();
                }
            }
            //定义getCellEditorValue方法返回颜色值
            public Object getCellEditorValue()
            {
                return c;
            }
            //重写getTableCellEditorComponent方法
            public Component getTableCellEditorComponent(JTable table,
                Object value,boolean isSelected,int row,int column)
            {
                c=(Color)value;
                return jb;     
            }
        }
        //声明Icon类型的自定义编辑器
        class MyEditorForIconClass extends AbstractCellEditor
                implements TableCellEditor,ActionListener
        {
            private static final long serialVersionUID = 1L;
            //定义Icon变量
            Icon icon;
            //创建一个按扭
            JButton jb=new JButton();
            //创建JColorChooser对象
            JFileChooser jfc=new JFileChooser();
            //声明一个常量
            public static final String EDIT="edit";
            //定义构造器
            public MyEditorForIconClass()
            {
                //为按扭注册监听器
                jb.addActionListener(this);
                //设置此按扭的动作命令
                jb.setActionCommand(EDIT);
            }
            //实现actionPerformed方法
            public void actionPerformed(ActionEvent e)
            {
                //测试获得的动作命令是否等于EDIT常量
                if(e.getActionCommand().equals(EDIT))
                {
                    //设置按扭的图标
                    jb.setIcon(icon);
                    //显示文件选择器对话框
                    jfc.showOpenDialog(jb);
                    //获取新图片
                    if(jfc.getSelectedFile()!=null)
                    {
                        icon=new ImageIcon(jfc.getSelectedFile().getAbsolutePath());
                    }               
                    //通知所有监听器,以延迟方式创建事件对象
                    this.fireEditingStopped();           
                }
            }
            //定义getCellEditorValue方法返回图标
            public Object getCellEditorValue()
            {
                return icon;
            }
            //重写getTableCellEditorComponent方法
            public Component getTableCellEditorComponent(JTable table,
                Object value,boolean isSelected,int row,int column)
            {
                icon=(Icon)value;
                return jb;     
            }
        }   
        //构造器
        public TryJTable()
        {
            //设置表格每行的高度为30个像素
            jt.setRowHeight(30);
            //将含JTable的滚动窗格添加进窗体的中间
            this.add(jsp,BorderLayout.CENTER);       
            //创建自定义的表格绘制器
            MyCellRendererForColorClass mcr=new MyCellRendererForColorClass();
            //向表格注册指定类型数据的绘制器
            jt.setDefaultRenderer(Color.class,mcr);       
            //创建自定义的表格编辑器
            MyEditorForColorClass mefcc=new MyEditorForColorClass();
            MyEditorForIconClass mefic=new MyEditorForIconClass();
            //向表格注册指定类型数据的编辑器
            jt.setDefaultEditor(Color.class,mefcc);
            jt.setDefaultEditor(Icon.class,mefic);       
            //设置窗体的关闭动作、标题、大小位置以及可见性
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setTitle("自定义表格绘制器与编辑器案例");
            this.setBounds(100,100,500,200);
            this.setVisible(true);
        }
        //主方法
        public static void main(String[] args)
        {
            //创建TryJTable窗体对象
            new TryJTable ();
        }
    }

     

    展开全文
  • JTable中,单元格的数据默认是Label的效果,也没有事件。 如果要为单元格添加一个按钮显示效果的话,那么就需要使用到一个swing的接口:javax.swing.table.TableCellRenderer,来改变单元桥格的默认默认渲染方法...

    一、添加按钮显示效果

    在JTable中,单元格的数据默认是Label的效果,也没有事件。

    如果要为单元格添加一个按钮显示效果的话,那么就需要使用到一个swing的接口:javax.swing.table.TableCellRenderer,来改变单元桥格的默认默认渲染方法(DefaultTableCellRenderer),

    实现的自定义的渲染器如下:

     
    package org.sky.table.render;

    import java.awt.Component;

    import javax.swing.JButton;
    import javax.swing.JPanel;
    import javax.swing.JTable;
    import javax.swing.table.TableCellRenderer;

    public class MyButtonRender implements TableCellRenderer
    {
        private JPanel panel;

        private JButton button;

        public MyButtonRender()
        {
            this.initButton();

            this.initPanel();

            // 添加按钮。
            this.panel.add(this.button);
        }

        private void initButton()
        {
            this.button = new JButton();

            // 设置按钮的大小及位置。
            this.button.setBounds(0, 0, 50, 15);

            // 在渲染器里边添加按钮的事件是不会触发的
            // this.button.addActionListener(new ActionListener()
            // {
            //
            // public void actionPerformed(ActionEvent e)
            // {
            // // TODO Auto-generated method stub
            // }
            // });

        }

        private void initPanel()
        {
            this.panel = new JPanel();

            // panel使用绝对定位,这样button就不会充满整个单元格。
            this.panel.setLayout(null);
        }

        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row,
                int column)
        {
            // 只为按钮赋值即可。也可以作其它操作,如绘背景等。
            this.button.setText(value == null ? "" : String.valueOf(value));

            return this.panel;
        }

    }

     

    修改表格的渲染器:this.table.getColumnModel().getColumn(2).setCellRenderer(new MyButtonRender());//只有获取到表格的列后才能添加渲染器。

     

    二、添加事件

    通过第一部已经为表格添加了默认的渲染器,但是还无法触发事件,触发事件是没有反应的,因为在点击表格时,会触发表格的编辑事件,而要想触发渲染的按钮的事件,还需要通过修改表格的默认编辑器来实现:

    package org.sky.table.editor; 
    import java.awt.Component; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 
     
    import javax.swing.DefaultCellEditor; 
    import javax.swing.JButton; 
    import javax.swing.JPanel; 
    import javax.swing.JTable; 
    import javax.swing.JTextField; 
     
    /**
     * 自定义一个往列里边添加按钮的单元格编辑器。最好继承DefaultCellEditor,不然要实现的方法就太多了。
     * 
     */ 
    public class MyButtonEditor extends DefaultCellEditor 

     
        /**
         * serialVersionUID
         */ 
        private static final long serialVersionUID = -6546334664166791132L; 
     
        private JPanel panel; 
     
        private JButton button; 
     
        public MyButtonEditor() 
        { 
            // DefautlCellEditor有此构造器,需要传入一个,但这个不会使用到,直接new一个即可。  
            super(new JTextField()); 
     
            // 设置点击几次激活编辑。  
            this.setClickCountToStart(1); 
     
            this.initButton(); 
     
            this.initPanel(); 
     
            // 添加按钮。  
            this.panel.add(this.button); 
        } 
     
        private void initButton() 
        { 
            this.button = new JButton(); 
     
            // 设置按钮的大小及位置。  
            this.button.setBounds(0, 0, 50, 15); 
     
            // 为按钮添加事件。这里只能添加ActionListner事件,Mouse事件无效。  
            this.button.addActionListener(new ActionListener() 
            { 
                public void actionPerformed(ActionEvent e) 
                { 
                    // 触发取消编辑的事件,不会调用tableModel的setValue方法。  
                    MyButtonEditor.this.fireEditingCanceled(); 
     
                    // 这里可以做其它操作。  
                    // 可以将table传入,通过getSelectedRow,getSelectColumn方法获取到当前选择的行和列及其它操作等。  
                } 
            }); 
     
        } 
     
        private void initPanel() 
        { 
            this.panel = new JPanel(); 
     
            // panel使用绝对定位,这样button就不会充满整个单元格。  
            this.panel.setLayout(null); 
        } 
     
     
        /**
         * 这里重写父类的编辑方法,返回一个JPanel对象即可(也可以直接返回一个Button对象,但是那样会填充满整个单元格)
         */ 
        @Override 
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) 
        { 
            // 只为按钮赋值即可。也可以作其它操作。  
            this.button.setText(value == null ? "" : String.valueOf(value)); 
     
            return this.panel; 
        } 
     
        /**
         * 重写编辑单元格时获取的值。如果不重写,这里可能会为按钮设置错误的值。
         */ 
        @Override 
        public Object getCellEditorValue() 
        { 
            return this.button.getText(); 
        } 
     

    修改表格的默认编辑器:

    this.table.getColumnModel().getColumn(2).setCellEditor(new MyButtonEditor());

     

    这样后就能基本达到效果了。但是还要注意,对列2来说,还需要启用可编辑功能,才行,不然仍然触发不了事件的。

    代码片段:

    public boolean isCellEditable(int row, int column) 

        // 带有按钮列的功能这里必须要返回true不然按钮点击时不会触发编辑效果,也就不会触发事件。  
        if (column == 2) 
        { 
            return true; 
        } 
        else 
        { 
            return false; 
        } 

    三、测试代码:

    测试代码的界面是由windowbuilder插件生成的,懒得自己去写干净的代码了,所以下边的代码有点冗余,大家看表格下边的那段代码即可:

    package org.sky.table.frame; 
     
    import java.awt.EventQueue; 
     
    public class TestTable 

     
        private JFrame frame; 
        private JTable table; 
     
        /**
         * Launch the application.
         */ 
        public static void main(String[] args) 
        { 
            EventQueue.invokeLater(new Runnable() 
            { 
                public void run() 
                { 
                    try 
                    { 
                        TestTable window = new TestTable(); 
                        window.frame.setVisible(true); 
                    } 
                    catch (Exception e) 
                    { 
                        e.printStackTrace(); 
                    } 
                } 
            }); 
        } 
     
        /**
         * Create the application.
         */ 
        public TestTable() 
        { 
            this.initialize(); 
        } 
     
        /**
         * Initialize the contents of the frame.
         */ 
        private void initialize() 
        { 
            this.frame = new JFrame(); 
            this.frame.setBounds(100, 100, 450, 300); 
            this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            this.frame.getContentPane().setLayout(null); 
     
            JPanel panel = new JPanel(); 
            panel.setBounds(10, 10, 414, 242); 
            this.frame.getContentPane().add(panel); 
            panel.setLayout(null); 
     
            JScrollPane scrollPane = new JScrollPane(); 
            scrollPane.setBounds(10, 10, 394, 222); 
            panel.add(scrollPane); 
     
            this.table = new JTable(); 
            scrollPane.setViewportView(this.table); 
     
            this.table.setModel(new DefaultTableModel() 
            { 
                @Override 
                public Object getValueAt(int row, int column) 
                { 
                    return (row + 1) * (column + 1); 
                } 
     
                @Override 
                public int getRowCount() 
                { 
                    return 3; 
                } 
     
                @Override 
                public int getColumnCount() 
                { 
                    return 3; 
                } 
     
                @Override 
                public void setValueAt(Object aValue, int row, int column) 
                { 
                    System.out.println(aValue + "  setValueAt"); 
                } 
     
                @Override 
                public boolean isCellEditable(int row, int column) 
                { 
                    // 带有按钮列的功能这里必须要返回true不然按钮点击时不会触发编辑效果,也就不会触发事件。  
                    if (column == 2) 
                    { 
                        return true; 
                    } 
                    else 
                    { 
                        return false; 
                    } 
                } 
            }); 
     
            this.table.getColumnModel().getColumn(2).setCellEditor(new MyButtonEditor()); 
     
            this.table.getColumnModel().getColumn(2).setCellRenderer(new MyButtonRender()); 
     
            this.table.setRowSelectionAllowed(false);// 禁止表格的选择功能。不然在点击按钮时表格的整行都会被选中。也可以通过其它方式来实现。  
        } 

    展开全文
  • BWStatTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); for (int i = 0; i < BWStatTable.getColumnCount(); i++) { TableColumn tc = BWStatTable.getColumn(BWStatTable. ...
    BWStatTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            for (int i = 0; i < BWStatTable.getColumnCount(); i++) {
                TableColumn tc = BWStatTable.getColumn(BWStatTable.
                        getColumnName(i));
                int c = tc.getModelIndex();
                int width = 0;
                int maxw = 0;
                for (int r = 0; r < BWStatTable.getRowCount(); ++r) {
                    TableCellRenderer renderer = BWStatTable.
                                                 getCellRenderer(r, c); //得到每个单元格的渲染器
                    Component comp = renderer.getTableCellRendererComponent(
                            BWStatTable, "", false, false,
                            r, c);
                    width = comp.getPreferredSize().width;
                    maxw = width > maxw ? width : maxw;
                }
                TableCellRenderer headRenderer = tc.getHeaderRenderer(); //得到每列中的表头渲染器
                if (headRenderer == null) {
                    headRenderer = BWStatTable.getTableHeader().         //得到表头中的表头渲染器
                                   getDefaultRenderer();
                }
                Component comp = headRenderer.getTableCellRendererComponent(
                        BWStatTable, tc.getHeaderValue(), false, false, 0,
                        i);
                int w = comp.getPreferredSize().width;
                maxw = w > maxw ? w : maxw;
                if (BWStatTable.getColumnCount() == 2) {
                    tc.setMinWidth(maxw + 20);
                    tc.setPreferredWidth(maxw + 160);
                }
                if (BWStatTable.getColumnCount() == 3) {
                    tc.setMinWidth(maxw + 20);                //列设置宽度
                    tc.setPreferredWidth(maxw + 70);
                }
            }

     

    展开全文
  • 自定义单元格类:SexCellRenderer package swing01; /* * 表格里得数据 */ public class Student { public String id; public String name; public boolean sex; public String birthday; public String ...

    设计要点:

    自定义单元格类: SexCellRenderer

    package swing01;
    
    /*
     * 表格里得数据
     */
    public class Student 
    {
    	public String id;
    	public String name;
    	public boolean sex;
    	public String birthday;
    	public String cellphone;
    }
    
    package swing01;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Font;
    import java.util.Vector;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.SwingConstants;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.TableColumn;
    
    public class MyFrame extends JFrame
    {
    	
    	//Model:负责数据
    	DefaultTableModel tableModel=new DefaultTableModel();
    	
    	//View:负责显示,创建JTable的时候指定一个Model
    	
    	JTable table=new JTable(tableModel);
    	
    	public MyFrame(String title)
    	{
    		super(title);
    		
    		JPanel root=new JPanel();
    		this.setContentPane(root);
    		root.setLayout(new BorderLayout());
    		
    		//添加至滚动面板
    		JScrollPane scrollPane=new JScrollPane(table);
    		table.setFillsViewportHeight(true);//确保表永远不会小于视图区
    		table.setRowSelectionAllowed(true);//整行选择
    		table.setRowHeight(30);
    		root.add(scrollPane, BorderLayout.CENTER);
    		
    		//初始化设置
    		tableModel.addColumn("学号");
    		tableModel.addColumn("姓名");
    		tableModel.addColumn("性别");
    		tableModel.addColumn("出生日期");
    		tableModel.addColumn("手机号");
    		
    		//列设置自定义绘制
    		TableColumn column2=table.getColumnModel().getColumn(2);
    		column2.setCellRenderer(new SexCellRenderer());
    		
    		
    		//添加数据行1
    		Student stu=new Student();
    		stu.id="20175104014";
    		stu.name="郭少";
    		stu.sex=true;
    		stu.birthday="2019-7-23";
    		stu.cellphone="15137724640";
    		addTabelRow(stu);
    		
    		//添加数据行2
    		Student stu2=new Student();
    		stu2.id="20175062026";
    		stu2.name="张少";
    		stu2.sex=false;
    		stu2.birthday="2019-7-23";
    		stu2.cellphone="17837724640";
    		addTabelRow(stu2);
    		
    	}
    	
    	
    	//
    	private void addTabelRow(Student stu)
    	{
    		//方法01
    		//import java.util.Vector是个泛型,表示数组
    //		Vector<Object>rowData=new Vector<>();
    //		rowData.add(stu.id);
    //		rowData.add(stu.name);
    //		rowData.add(stu.sex);
    //		rowData.add(stu.birthday);
    //		rowData.add(stu.cellphone);
    //		tableModel.addRow(rowData);
    		
    		//方法2
    		Object[] rowData=new Object[5];
    		rowData[0]=stu.id;
    		rowData[1]=stu.name;
    		rowData[2]=stu.sex;
    		rowData[3]=stu.birthday;
    		rowData[4]=stu.cellphone;
    		tableModel.addRow(rowData);
    	
    	}
    	static class SexCellRenderer extends JLabel implements TableCellRenderer
    	{
    		public SexCellRenderer()
    		{
    			this.setHorizontalAlignment(SwingConstants.CENTER);
    			this.setFont(this.getFont().deriveFont(Font.PLAIN));
    			this.setBackground(new Color(0,0,0,0));
    		}
    
    		//设置颜色...以及...男-女
    		@Override
    		public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
    				int row, int column) {
    			
    			boolean sex=(boolean)value;
    			if(sex==true)
    				this.setText("男");
    			else
    				this.setText("女");
    			
    			//背景
    			this.setOpaque(true);
    			
    			if(isSelected)
    			{
    				this.setBackground(table.getSelectionBackground());
    				this.setForeground(table.getSelectionForeground());
    			}
    			else
    			{
    				this.setBackground(table.getBackground());
    				this.setForeground(table.getForeground());
    			}
    			
    	        return this;
    		}
    	}
    }
    
    package swing01;
     
    import java.awt.Container;
    import java.awt.FlowLayout;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
     
    public class MyDemo
    {
    	private static void createGUI()
    	{
    		// JFrame指一个窗口,构造方法的参数为窗口标题
    		JFrame frame = new MyFrame("信息列表");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		
    				// 设置窗口的其他参数,如窗口大小
    		frame.setSize(400, 300);
    		
    		// 显示窗口
    		frame.setVisible(true);
    	}
    	
    	public static void main(String[] args)
    	{
    
    		javax.swing.SwingUtilities.invokeLater(new Runnable() {
    			public void run()
    			{
    				createGUI();
    			}
    		});
     
    	}
    }
    

     

    展开全文
  • 再议将Swing组件与JTable单元格组件

    千次阅读 2014-01-17 14:29:22
    可以说JTable是Swing组件中最重要的组件,只要程序和数据库打交道的程序必然有表格组件,而且多数情况下又不会很直白的把数据填到表格里,一般都会把各种组件放在表格里以便于对特定数据的呈现,也因此表格组件成了...
  • 实现设置JTable中某些单元格的背景色
  • table = new jtable(){ public boolean iscelleditable(int row, int column){ if(column>3) //表示设置前3列不可编辑 { return false; ...
  • Java修改JTable单元格背景色

    千次阅读 2019-07-12 09:56:07
    JTable单元格的渲染都通过TableCellRenderer这个接口进行,因此最合适的方式是通过继承默认的DefaultTableCellRenderer类并添加自己想要的功能。 通过查看代码可以发现,TableCellRenderer这个接口里只有如下一个...
  • 对于JTable单元格的渲染主要是通过两个接口来实现的,一个是TableCellRenderer另一个是TableCellEditor,JTable默认是用的是DefaultCellRenderer和DefaultCellEditor,这两个都是在类似JTextfield的一个JComponent的...
  • (1)我们可以使用Jtable的三个方法:getCellRect(),columnAtPoint(),and rowAtPoint()。第一个方法返回一个单元格的边界(Rectangle类),第二、三个方法分别返回屏幕指定位置的列和行。为了实现单元格合并,...
  • 对于JTable单元格的渲染主要是通过两个接口来实现的,一个是TableCellRenderer另一个是TableCellEditor,JTable默认是用的是DefaultCellRenderer和DefaultCellEditor,这两个都是在类似JTextfield的一个JComponent的...
  • JTable table = new JTable(); 2) 以表头和表数据创建表格,并且让表单元格不可改. String[] headers = { “表头一”, “表头二”, “表头三” }; Object[][] cellData = null; 3) 利用TableModel DefaultTableModel ...
  • JTable中如何用enter键代替tab键的功能,这是一个坑; 在单元格处于编辑状态时按一次enter键,焦点水平移动;必须得按2次enter键才能水平移动; 其实这个问题的关键在于:光标在单元格中时,按enter键时table的...
  • JTable 行 列 单元格操作——很实用

    千次阅读 2011-07-07 11:27:48
    一.创建表格 1) 调用无参构造函数. JTable table = new JTable(); 2) 以表头和表数据创建表格,并且让表单元格不可改. String[] headers = { "表头一", "表头二", "表头三" }; Object[][] cellData
  • JTable单元格可以自动换行、自动调整宽度以适合单元格内容 源代码也可以从我的Java资料站进行下载!http://Java.EchoChina.net或http://61.131.30.54/123/Develop/Java/SC/ 这是我在项目中自己做意见显示要分行...
  • 表格默认单元格大小都有相同的size,但是有些字段如身份证手机号很长,用宽些的单元格才能完全显示,要不每次运行显示后都要特意去调一下长度比较麻烦,怎么在设置成如下图的格式呢?谢谢!
  • 在网上看了一篇jtable自适应列宽的文章,发现设置之后最后一列会留出很长的位置,下面我对这个方法做了适当地修改,能够平均分配每一列  public void fitTableColumns(JTable myTable) { int[] i; int j = 0; ...
  • JTable中如何让单元格文字居中

    千次阅读 2013-10-31 12:59:25
    import javax.swing.JFrame; import javax.swing.JScrollPane;...import javax.swing.JTable; import javax.swing.SwingConstants; import javax.swing.table.DefaultTableCellRenderer;   public c
  • swing 中Jtable例子

    2010-01-30 18:06:25
    网上下载的swing的jtable合并单元格,单元格设置字体,大小,背景和前景色
  • 主意事项: 1、设置列的宽度是应该用setPreferredWidth(),不宜用setMinWidth或setMaxWidth,否则列的宽度不会变化。... 3、Jtable的属性autoResizeMode设置成SUBSEQUENT_COLUMNS或ALL_COLUMES
  • void addColumn(TableColumn aColumn) 将 aColumn 追加到此 JTable 的列模型所保持的列数组的结尾。 void addColumnSelectionInterval(int index0, int index
  • //设置JTable表格单元格对齐的效果 public void setDuiqi(JTable table) { //对其方式设置 DefaultTableCellRenderer d = new DefaultTableCellRenderer(); //设置表格单元格的对齐方式为居中对齐方式 ...
  • JTable 如何设置表格的列宽

    千次阅读 2015-04-06 09:10:24
    1:可以利用TableColumn提供的方法setPreferredWidth()来设置表格的列宽 import java.awt.BorderLayout; import javax.swing.*; import javax.swing.table.*; /** * 教你如何设置表格的列宽 * @author ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 694
精华内容 277
关键字:

jtable设置单元格大小