java swing的渲染table方法:

swing中table的渲染爲三種:

1 列頭渲染:

方法:新建一個類  testheaderrender,繼承defaulttablecolrenderer  裏面實現方法getTableCellRendererComponent()方法,

在其他方法中如果有一個新的table組件,在裏面寫上:table.getTableHeader().setDefaultRenderer(new HeaderRenderer());即可實現列頭的渲染。

2 行頭的渲染:

方法:同樣的新建一個類testcolheadrenderer,繼承 defaulttablecolrenderer ,在這個類裏面實現方法 getTableCellRendererComponent();調用的時候,在new 的新的table中不調用,而是在給這個表格添加attribute的時候添加如下語句:

attribute.setRendererClass("cams.alarm_manage.alarmBan.ColHeadRenderer");

3 表中數據的渲染:

方法:直接在你new的新的table後面寫個匿名內部類,實現方法:prepareRenderer返回

components組件,裏面的關鍵代碼:

Component component = super.prepareRenderer(renderer, row, col);
                JComponent comp = (JComponent) component;
                TTableColumn column = (TTableColumn)         

                 table.getColumnByIndex(col);

下面根據實際的條件,在進行判斷,判斷完以後,返回 component組件;

4.渲染實例:

 

table = new PersonTable(box){
            public void prepareTableHeaderRenderer(JLabel renderer, TTableColumn tableColumn){
                renderer.setOpaque(false);//
如果爲 true,則該組件繪製其邊界內的所有像素
                renderer.setForeground(Color.white);// 設置此組件的前景色。
                renderer.setFont(font);// 設置此組件的字體。
            }
            public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
                Component component = super.prepareRenderer(renderer, row, col);
                if(alternateButton.isSelected()){
                    setAlternateRowColor(component, row, col);
                }else{
                    setGradientRowColor(component, row, col);
                }
                Person person = (Person) table.getElementByRowIndex(row);//獲得該行的persona對象
                if(person != null && !person.isSelected()){//當前對象不爲空且沒有被選擇
                    if(person.getAge() == 20 || person.getAge() == 80){
                        component.setBackground(Color.green);
                    }
                }
                return component;
            }
            public boolean isCellEditable(int row, int col) {
                TTableColumn column = this.getColumnByIndex(col);
                if(column.getName().equals(TWaverConst.USER_PROPERTY_PREFIX + "MultiLine")){
                    return true;
                }
                return super.isCellEditable(row, col);
            }
           
            protected JTableHeader createDefaultTableHeader() {
                return new JTableHeader(columnModel){
                    public void paintComponent(Graphics g) {
                        this.setOpaque(false);
                        Graphics2D g2 = (Graphics2D)g;
                        g2.setPaint(new GradientPaint(0, this.getHeight()/4, Color.black, 0, this.getHeight()/7*6, tableHeaderColor, true));
                        g2.fillRect(0, 0, table.getWidth(), this.getHeight());
                        super.paintComponent(g);
                    }
                };
            }           
        };

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章