<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 閱讀(2431) 評論(0)  編輯  收藏 所屬分類: swing
    主站蜘蛛池模板: 国产一区二区免费在线| 999国内精品永久免费观看| 日本一线a视频免费观看| 亚洲图片校园春色| 亚洲视频免费一区| 久久亚洲精品无码VA大香大香| 中文字幕免费观看视频| 亚洲一区AV无码少妇电影☆| 国产精品黄页免费高清在线观看 | 57PAO成人国产永久免费视频| 亚洲制服中文字幕第一区| 97视频免费观看2区| 亚洲精品免费视频| 精品免费人成视频app| 日本亚洲精品色婷婷在线影院| 在线观看免费人成视频| 亚洲欧美国产欧美色欲| 国产福利免费在线观看| 国产三级在线免费观看| 亚洲AV无码一区二区乱子伦| 精品福利一区二区三区免费视频| 91在线亚洲综合在线| 免费国产在线观看老王影院| 中文字幕a∨在线乱码免费看| 亚洲国产老鸭窝一区二区三区| 国产免费女女脚奴视频网| 亚洲中文无码卡通动漫野外| 亚洲?V乱码久久精品蜜桃| 黄色网站软件app在线观看免费 | 黄色三级三级免费看| 亚洲人精品午夜射精日韩| 18禁无遮挡无码国产免费网站 | 香港特级三A毛片免费观看| 激情97综合亚洲色婷婷五| 最近中文字幕大全免费视频| 国产午夜亚洲精品国产| 国产午夜亚洲精品国产成人小说| 无码人妻一区二区三区免费看| 亚洲AV无码国产精品色| 亚洲国产精品丝袜在线观看| 在线日本高清免费不卡|