牛刀繼續(ToolTip也瘋狂)

          ToolTip  對 就是那家伙 丑的要命..一個方塊 里面幾個字 =.=..... 那不是我的作為!!我要將它帥起來!!
          (本來打算明天更新的..被群里一位先生拼命的催啊催啊催....)

          射像機! 鏡頭向我這里看齊!!!!

          效果圖:
             


           

          package ToolTip;

          import java.awt.BasicStroke;
          import java.awt.Color;
          import java.awt.Dimension;
          import java.awt.FontMetrics;
          import java.awt.Graphics;
          import java.awt.Graphics2D;
          import java.awt.RenderingHints;
          import java.awt.Shape;
          import java.awt.geom.RoundRectangle2D;

          import javax.swing.ImageIcon;
          import javax.swing.JButton;
          import javax.swing.JLabel;
          import javax.swing.JToolTip;



          //繼承自JToolTip
          class CustomToolTip extends JToolTip {

           
          public void paintComponent(Graphics g) {

          //形狀 自己看著辦..自己覺的什么漂亮就用什么
           Shape round = new RoundRectangle2D.Float(4,4,
                  
          this.getWidth( )-1-8,
                  
          this.getHeight( )-1-8,
            
          15,15);
           
           Graphics2D g2 
          = (Graphics2D)g;
           g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
           g2.setColor(Color.white);
           g2.fill(round);


           g2.setColor(Color.gray);
           g2.setStroke(
          new BasicStroke(5));
           g2.draw(round);
           g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_DEFAULT);


           String text 
          = this.getComponent( ).getToolTipText( );
           
          if(text != null{
                     FontMetrics fm 
          = g2.getFontMetrics( );
                     
          int h = fm.getAscent( );
                     g2.setColor(Color.black);
               g2.drawString(text,
          10,(this.getHeight( )+h)/2);
            }

           }

           
          public Dimension getPreferredSize( ) {
            Dimension dim 
          = super.getPreferredSize( );
            
          return new Dimension((int)dim.getWidth( )+20,
                     (
          int)dim.getHeight( )+20);
           }

           
          public CustomToolTip( ) {
            
          super();
            
          //不用介紹了,
            this.setOpaque(false);
           }

           
          }

          //用到時 就用這里 JButton jb = new CustomJButton ();
          //可以自己更改 比如你不想要JButton 你想要JLabel 或者其他的 就 extends JLabel
          // 然后 JLabel jl = new CustomJButton(); 當然 名字隨便你換不換..(換了比較規范)
          public class CustomJButton extends JButton 
           
          /**
            * 
            
          */

           
          private static final long serialVersionUID = 1L;
           JToolTip _tooltip;
           

           
          public CustomJButton(String string, ImageIcon icon) {
          //傳入的JButton 字符串和JButton的Icon 如果不需要.可以直接刪掉
          //或者自己在加一個無參數的方法..
            super(string,icon);
            _tooltip 
          = new CustomToolTip( );
            _tooltip.setComponent(
          this);
           }


           
          public JToolTip createToolTip( ) {
            
          return _tooltip;
           }

          }


          下面寫一個Main類來測試一下


          import javax.swing.BoxLayout;
          import javax.swing.JButton;
          import javax.swing.JFrame;
          import javax.swing.JLabel;

          public class ToolTipsHack {
           
           
          public static void main(String[] args) {
            JButton button;

            JFrame frame 
          = new JFrame("Tool Tips Hack");
            BoxLayout layout 
          = new BoxLayout(
             frame.getContentPane( ),
             BoxLayout.Y_AXIS);
            frame.getContentPane( ).setLayout(layout);

            button 
          = new CustomJButton("啊啊",null );
            button.setText(
          "Open");
            button.setToolTipText(
          "相信牌ToolTip");
            frame.getContentPane( ).add(button);

            button 
          = new CustomJButton("啊啊啊",null);
            button.setText(
          "Save");
            button.setToolTipText(
          "Save the currently open file");
            frame.getContentPane( ).add(button);

            frame.getContentPane( ).add(
          new JLabel("a label"));
            frame.getContentPane( ).add(
          new JLabel("a label"));
            frame.getContentPane( ).add(
          new JLabel("a label"));

            frame.pack( );
            frame.setVisible(
          true);//或者直接 frame.show( ); 
           }
           
          }


           



           

          posted on 2008-05-19 20:07 相信 閱讀(686) 評論(0)  編輯  收藏 所屬分類: Swing文章

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          公告

          不顯示applet

          常用鏈接

          留言簿(16)

          我參與的團隊

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊

          swingchina 專業搞Swing的網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 射洪县| 莱州市| 夏邑县| 辽阳县| 色达县| 扶绥县| 洪洞县| 廊坊市| 建瓯市| 汶川县| 田阳县| 新晃| 阳泉市| 宁晋县| 浦江县| 宁乡县| 遵义市| 怀化市| 泗水县| 榕江县| 上思县| 加查县| 汕尾市| 临泉县| 朝阳区| 阿瓦提县| 温泉县| 祁阳县| 湘西| 封开县| 昭苏县| 宁德市| 惠水县| 柯坪县| 宁陵县| 大渡口区| 开化县| 瑞安市| 衢州市| 监利县| 舞钢市|