<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
    主站蜘蛛池模板: 亚洲AV无码AV男人的天堂| 亚洲熟女乱综合一区二区| 亚洲视频小说图片| 无码精品人妻一区二区三区免费看| 亚洲人成影院在线观看| 一级中文字幕乱码免费| 久久亚洲AV无码西西人体| 三年片在线观看免费西瓜视频 | 暖暖在线视频免费视频| 国产亚洲综合成人91精品| 久久久久成人精品免费播放动漫| 亚洲色图在线观看| 国产情侣激情在线视频免费看| 色在线亚洲视频www| 国产亚洲精品免费| 一级做a爰性色毛片免费| 国产亚洲AV无码AV男人的天堂| 无码人妻精品中文字幕免费| 亚洲人成网站在线观看播放青青 | 免费jjzz在在线播放国产| a级毛片免费观看在线| 国产亚洲高清不卡在线观看| 日韩免费高清大片在线 | 特级一级毛片免费看| 国产偷v国产偷v亚洲高清| 国产91色综合久久免费| 亚洲精品成a人在线观看☆| 亚洲精品NV久久久久久久久久| 久久久精品免费国产四虎| 亚洲一区二区三区深夜天堂 | 午夜无码A级毛片免费视频| 激情五月亚洲色图| 亚洲男女内射在线播放| 18pao国产成视频永久免费| 亚洲av无一区二区三区| 亚洲精品卡2卡3卡4卡5卡区| 成人爽A毛片免费看| 国产精品免费在线播放| 亚洲粉嫩美白在线| 亚洲精品tv久久久久久久久| 青青久在线视频免费观看|