swing-关于JTable渲染器Renderer的问题,求高手解答!!!!

问题描述

关于JTable渲染器Renderer的问题,求高手解答!!!!
 public class MyButtonRender implements TableCellRenderer
    {
        private JPanel panel;
        private JButton add,reduce;
        private JTextField numbertf;
        public MyButtonRender()
        {
            this.initAdd();
            this.initReduce();
            this.initNumbertf();
            this.initPanel();
            // 添加按钮
            this.panel.add(this.add);
            this.panel.add(this.numbertf);
            this.panel.add(this.reduce);
        }
        private void initAdd()
        {
            this.add = new JButton("+");
            // 设置按钮的大小及位置。
            this.add.setBounds(0, 0, 41, 20);
        }
        private void initReduce(){
            this.reduce = new JButton("-");
            // 设置按钮的大小及位置。
            this.reduce.setBounds(82, 0, 41, 20);
        }
        private void initNumbertf(){
            this.numbertf=new JTextField();
            this.numbertf.setBounds(42,0,30,20);
        }
        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)
        {
            return this.panel;
        }
    }

这是我渲染器的代码,就是在一个单元格内添加两个按钮和一个文本框

 public  class AllTableModel extends AbstractTableModel{
    private static final long serialVersionUID = 1L;
    protected Vector content=null;
    private String[] title_name = { "编号", "名称", "型号","数量"};
    public void addRow(String ID, String name,String model,JPanel number) {
        Vector v = new Vector(title_name.length);
        v.add(0,ID);
        v.add(1,name);
        v.add(2, model);
        v.add(3,number);
        content.add(v);
   }
    //需要子类自行提供addRow方法
     public AllTableModel(){
           content = new Vector();
     }
     public AllTableModel(int count){
           content = new Vector(count);
     }
     public void removeRow(int row) {
           content.remove(row);
     }
     public void removeRows(int row, int count) {
             for (int i = 0; i < count; i++) {
                 if (content.size() > row) {
                     content.remove(row);
                 }
             }
     }
     public int getColumnCount() {
         String[] inherit=getTitlename();
         return inherit.length;
     }
     public int getRowCount() {
         return content.size();
     }
     public Object getValueAt(int row, int col) {
         return  ((Vector) content.get(row)).get(col);
     }
     public String getColumnName(int col) {
         String[] inherit=getTitlename();
         return inherit[col];
     }
     public void setValueAt(Object value, int row, int col) {
             ((Vector) content.get(row)).remove(col);
             ((Vector) content.get(row)).add(col, value);
             this.fireTableCellUpdated(row, col);
     }
     public boolean isCellEditable(int rowIndex, int columnIndex) {
        if (columnIndex == 0) {
            return false;
        }
        return true;
    }
    //需要在子类中定义自己的getTitlename方法
    public String[] getTitlename(){
         return title_name;
    }
}

这是我的TableModel的代码

我想问为什么我用DefaultTableModel,然后用两个数组初始化,就可以显示出来渲染器的效果,但是要是用自己写的TableModel,然后调用addRow方法添加,表格中就什么也不显示,这是为什么?

时间: 2025-01-02 14:08:24

swing-关于JTable渲染器Renderer的问题,求高手解答!!!!的相关文章

jtable表格问题,求高手解答

问题描述 点表格的一行,然后在点按钮,可以对这一行的数据操作,如修改,删除.如何实现选行 解决方案 解决方案二:JTable1.获取当前选择行的每一行数据2.弹出来一个Dialog修改数据3.确认...解决方案三:好像没有这个功能!解决方案四:引用2楼yingkeda的回复: 好像没有这个功能! 我也没使过,是好像没这个功能!引用1楼dyllove98的回复: JTable1.获取当前选择行的每一行数据2.弹出来一个Dialog修改数据3.确认... 一楼确认这样用过?还是你自己扩展的功能?解决

可视化Swing中JTable控件绑定SQL数据源的两种方法深入解析

以下是对可视化Swing中JTable控件绑定SQL数据源的两种方法进行了详细的分析介绍,需要的朋友可以过来参考一下   在 MyEclipse 的可视化 Swing 中,有 JTable 控件. JTable 用来显示和编辑常规二维单元表. 那么,如何将 数据库SQL中的数据绑定至JTable中呢? 在这里,提供两种方法.JTable的构造方法通过查阅Java的API,可以可以得到JTable的两个重要的构造方法:JTable(Object[][] rowData, Object[] colu

android的shader渲染器

android里边的渲染器的使用主要是shader的子类,shader继承自object,他的子类有:              1.BitMapShader:BitMapShader 是bitmap渲染器,看名字就知道, BitmapShader是Shader的子类,可以通过Paint.setShader(Shader shader)进行设置. 这里我们只关注BitmapShader,构造方法: mBitmapShader = new BitmapShader(bitmap, TileMode

移动开发-aChartEngine中,数据集和渲染器有什么区别?

问题描述 aChartEngine中,数据集和渲染器有什么区别? 我下载了一个aChartEngine开发框架. 想做一个类似于苹果健康里面的步数柱状图. 用数据集还是渲染器?

基于Directshow框架使用Windows渲染器VMR叠加水印

对于windows系统,EVR/VMR9/VMR渲染器均提供了叠加静态图片的接口:SetAlphaBitmap(): 此接口支持静态图片的资源使用方式,一种是HDC,一种是SURFACE:使用发现,如果静态图片不规则,是有Alpha通道的不同取值形成,则通过HDC叠加的会有黑边存在: 对于EVR/VMR9可采用SURFACE,使用D3D创建,完美水印效果相对容易实现,略过:对于VMR渲染器,SURFACE需要基于DirectDraw创建离屏表面: 离屏表面创建后,静态图片数据使用决定着是否能完美

OpenGL是如何运转的:在500行代码中的软件渲染器

在这一系列的文章中,我想向大家展示OpenGL通过编写其克隆来运作的方式(一种简化了很多的方式).令人吃惊的是,我经常遇见一些在学习OpenGL/ DirectX的过程中连基础障碍都无法克服的人.因此,我已经准备了一系列较短的演讲,演讲结束后,我的学生会展示一些非常好的渲染器.   所以,任务被制定为以下:使用非第三方的函数库(尤其是图表类的),获得像这张图表一样的东西.     警告:这是一种可以轻率地复制OpenGL函数库结构的培训材料.它将成为一种软件渲染器.我不想说如何应用OpenGL,

接口-我想制作一个电子阅读器用stm32f103rct6,求住制作流程,网上有一个,不是很懂求指教

问题描述 我想制作一个电子阅读器用stm32f103rct6,求住制作流程,网上有一个,不是很懂求指教 这是我从网上down的方法,有点不懂,关键就是编程还有MF RC522模块设计,求大虾指教,谢谢 1 硬件设计 1.1 硬件结构设计 RFID阅读器基于STM32单片机设计,芯片型号选择为STM32F103RBT6.该芯片为LQFP64封装, 内部有128 KB Flash和20 KB RAM,采用32位的ARM CortexTM-M3内核, 最高支持主频72 MHz,拥有2个SPI接口. 2

android-关于安卓虚拟器的问题,求问

问题描述 关于安卓虚拟器的问题,求问 刚刚创建了一个模拟器,如下: 但是运行时出现如下问题: 求解我该怎么做呢? 解决方案 这要求你的电脑安装了HAXM Inter 加速器,这个东西一般在你下载的SDK里有,但是你首先要在电脑开机的时候进入到Boot页面,将里面的Virtual Setting由no改成yes,这样你的Intel虚拟加速器才能正常安装成功,不过你不用X86的Intel模拟器,你换成AMD(好像是这个)也是可以用的,只不过是启动时间慢了点儿而已,其他的模拟器启动后都是正常使用的.

android开发-android中播放器的bug,求解决

问题描述 android中播放器的bug,求解决 再做一个关联后台的手机app ,里面主要是无线广播这一块儿,mms://222.90.232.44:8082/fm999_audio 不能播放.是因为加端口号了么 解决方案 Android很全的资料http://download.csdn.net/album/detail/1121