<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 閱讀(2433) 評論(0)  編輯  收藏 所屬分類: swing
    主站蜘蛛池模板: 免费一区二区无码视频在线播放| 免费无码AV片在线观看软件| 亚洲av最新在线观看网址| 亚洲AV无码久久| 免费**毛片在线播放直播| 麻豆一区二区免费播放网站| 黄页免费在线观看| 香蕉视频免费在线播放| 亚洲成人激情小说| 久久久久亚洲精品日久生情 | 亚洲av无码片在线播放| 国产免费午夜a无码v视频| 国产在线观看免费观看不卡| 777爽死你无码免费看一二区 | 亚洲国产天堂久久综合| 永久在线毛片免费观看| 无人影院手机版在线观看免费| 久久这里只精品99re免费| 国产无遮挡色视频免费观看性色| 亚洲AV色欲色欲WWW| 国产精品亚洲片夜色在线| 666精品国产精品亚洲 | 青柠影视在线观看免费高清 | 成全影视免费观看大全二| 亚洲一级免费毛片| 久久国产精品免费看| 国产免费人成视频尤勿视频| 精品国产日韩亚洲一区91| 亚洲欧洲无卡二区视頻| 亚洲欧洲免费无码| 亚洲乱理伦片在线观看中字| 亚洲中文字幕久久久一区| 亚洲天然素人无码专区| 亚洲一区二区三区写真| 亚洲依依成人亚洲社区| 亚洲国产日韩精品| 亚洲精品久久无码| 日韩亚洲人成网站| 免费无遮挡无码视频在线观看| 国产99久久亚洲综合精品| 国产成人亚洲精品91专区高清|