<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    有才華的人,別忘記給滋潤你的那塊土壤施肥

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      28 隨筆 :: 5 文章 :: 147 評論 :: 0 Trackbacks

         
            有時候為了使JTable配合軟件風格配置不同的顏色,當table的有表頭以及添加了JScrollPane有ScollBar的時候會出現有個右上角有個區域的顏色是和底色是一樣的,如下圖1:
                           
                                                                   圖一

            為了使得那個灰色區域和table header 的顏色一致,一時居然不知道如何是好,趕快查jdk的API文檔發現這個圖二:

                           
                                                 圖二
    知道了這個corner component就好辦了,那就添加如下:

    jScrollPane1.getCorner(JScrollPane.UPPER_RIGHT_CORNER).setBackground(Color.red),

    卻又發現jScrollPane1.getCorner(JScrollPane.UPPER_RIGHT_CORNER)為NULL,原來要給他添加一個corner component,
    那就再添加如下代碼:

            JLabel jb = new JLabel();    
            jb.setBackground(Color.black);
            jScrollPane1.setCorner(JScrollPane.UPPER_RIGHT_CORNER, jb);

    但是通過測試發現那個corner的顏色依然沒有灰色,郁悶!!查找資料得將lable.setOpaque(true)

    關于此方法的解釋如下:
    如果為 true,則該組件繪制其邊界內的所有像素。否則該組件可能不繪制其某些或所有像素,從而允許其下面的像素透視出來。

    對于 JComponent 而言,此屬性的默認值是 false。但是對于大多數標準的 JComponent 子類(如 JButtonJTree),此屬性的默認值是和外觀相關的。

    這樣就效果如圖三:
                         
                                                  圖三

    不過當時不知道這個setOpaque(true),而是用了另外一個比較笨的方法,如:

            JLabel jb = new JLabel();    
            
    //jb.setOpaque(true);
            jb.setBackground(Color.black);
            jb.setBorder(BorderFactory.createLineBorder(Color.red, 
    20));
            jScrollPane1.setCorner(JScrollPane.UPPER_RIGHT_CORNER, jb);


    測試的代碼如:

    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;
    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    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.TableModel;

    public class KJTable extends JFrame{
        
    private JTable table;
        
    private KJTableCellRenderer renderer = new KJTableCellRenderer();
        
    private BorderLayout borderLayout = new BorderLayout();
        
    private JScrollPane jScrollPane1 = new JScrollPane();
        
    public KJTable(){
            
    this.setLayout(borderLayout);
            table 
    = new JTable();
            table.setRowHeight(
    20);
            Object rows[][] 
    ={
                    
    "王明""中國"44 },
                    
    "姚明""中國"25 },
                    
    "趙子龍""西蜀"1234 },
                    
    "曹操""北魏"2112 },
                    
    "Bill Gates""美國"45 },
                    
    "Mike""英國"33 },
                    
    "王明""中國"44 },
                    
    "姚明""中國"25 },
                    
    "趙子龍""西蜀"1234 },
                    
    "曹操""北魏"2112 },
                    
    "Bill Gates""美國"45 },
                    
    "Mike""英國"33 }}
    ;
            String columns[] 
    = "姓名""國籍""年齡" };
            TableModel model 
    = new DefaultTableModel(rows, columns);
            JTable table 
    = new JTable(model);    
            table.setModel(model);
            table.getTableHeader().setDefaultRenderer(renderer);
            table.setDefaultRenderer(Object.
    class, renderer);
            jScrollPane1.getViewport().add(table);
            getContentPane().add(jScrollPane1, BorderLayout.CENTER);        
            JLabel jb 
    = new JLabel();    
            
    //jb.setOpaque(true);
            jb.setBackground(Color.black);
            jb.setBorder(BorderFactory.createLineBorder(Color.red, 
    20));
            jScrollPane1.setCorner(JScrollPane.UPPER_RIGHT_CORNER, jb);        
            
    this.setSize(300200);
            
    this.setVisible(true);
            
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }

        
    public static void main(String[] args) {
            
    new KJTable();
        }
        
        
    private class KJTableCellRenderer extends JLabel implements TableCellRenderer{
            
    public Component getTableCellRendererComponent(JTable table, Object value,
                                
    boolean isSelected, boolean hasFocus, int row, int col) {            
                
    if(row<0){
                    setHorizontalAlignment(SwingConstants.CENTER);
                    setBackground(
    new Color(45,145,180));
                    setForeground(Color.white);
                }
        
                
    else {
                    setHorizontalAlignment(SwingConstants.LEFT);
                    
    if(row %2 == 0){
                        setBackground(
    new Color(255,255,205));
                        setForeground(Color.blue);
                    }

                    
    else{
                        setBackground(
    new Color(255,220,150));
                        setForeground(Color.red);
                    }
                
                }
            
                setText(value.toString());
                setOpaque(
    true);//
                return this;
            }
        
        }

    }

    posted on 2008-03-21 17:08 kissjava 閱讀(2430) 評論(0)  編輯  收藏 所屬分類: swing
    主站蜘蛛池模板: 久久亚洲精品国产精品| www亚洲精品少妇裸乳一区二区| 97久久国产亚洲精品超碰热| 亚洲一区精品伊人久久伊人| 我们的2018在线观看免费高清| 亚洲精品视频免费| 亚洲无人区码一二三码区别图片| 亚洲国产综合91精品麻豆| 亚洲AV伊人久久青青草原| 好爽又高潮了毛片免费下载| 99在线观看免费视频| 美女视频黄a视频全免费网站色窝 美女被cao网站免费看在线看 | 日韩免费高清视频网站| **aaaaa毛片免费| 中文字幕免费视频一| 50岁老女人的毛片免费观看| 免费在线中文日本| 91制片厂制作传媒免费版樱花 | 日本特黄特黄刺激大片免费| 亚洲国产天堂久久综合网站 | 亚洲国产成人超福利久久精品| 亚洲精品无码不卡在线播HE| 亚洲人成网站在线播放vr| 亚洲国产成人高清在线观看| 亚洲精品tv久久久久久久久| 亚洲AV日韩精品久久久久| 亚洲日本乱码一区二区在线二产线| 亚洲图片校园春色| 亚洲AV色无码乱码在线观看| 一级毛片免费在线| 一级毛片全部免费播放| 免费无码看av的网站| 亚洲综合色区在线观看| 精品亚洲成a人片在线观看少妇 | 国产精品免费看香蕉| 亚洲熟女一区二区三区| 亚洲中文精品久久久久久不卡| 一二三四在线观看免费中文在线观看| 91老湿机福利免费体验| 亚洲福利精品电影在线观看| 亚洲国产综合人成综合网站00|