站長資訊網
        最全最豐富的資訊網站

        jdk1.7的新特性

         jdk7 增加了一個JLayer,用于在控件上方繪制一個新的圖層。當然jdk6里只要在paint里也能做到,不過新特性方便了很多,最少你可以方便的為Jdk代碼添加這些新特性。

        public class Diva {
          public static void main(String[] args) {
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
              public void run() {
                createUI();
              }
            });
          }

          public static void createUI() {
            JFrame f = new JFrame (“Diva”);
           
            LayerUI<JPanel> layerUI = new SpotlightLayerUI();
            JPanel panel = createPanel();
            JLayer<JPanel> jlayer = new JLayer<JPanel>(panel, layerUI);
           
            f.add (jlayer);
           
            f.setSize(300, 200);
            f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
            f.setLocationRelativeTo (null);
            f.setVisible (true);
          }

          private static JPanel createPanel() {
            JPanel p = new JPanel();

            ButtonGroup entreeGroup = new ButtonGroup();
            JRadioButton radioButton;
            p.add(radioButton = new JRadioButton(“Beef”, true));
            entreeGroup.add(radioButton);
            p.add(radioButton = new JRadioButton(“Chicken”));
            entreeGroup.add(radioButton);
            p.add(radioButton = new JRadioButton(“Vegetable”));
            entreeGroup.add(radioButton);

            p.add(new JCheckBox(“Ketchup”));
            p.add(new JCheckBox(“Mustard”));
            p.add(new JCheckBox(“Pickles”));

            p.add(new JLabel(“Special requests:”));
            p.add(new JTextField(20));

            JButton orderButton = new JButton(“Place Order”);
            p.add(orderButton);

            return p;
          }
        }

        class SpotlightLayerUI extends LayerUI<JPanel> {
          private boolean mActive;
          private int mX, mY;

          @Override
          public void installUI(JComponent c) {
            super.installUI(c);
            JLayer jlayer = (JLayer)c;
            jlayer.setLayerEventMask(
              AWTEvent.MOUSE_EVENT_MASK |
              AWTEvent.MOUSE_MOTION_EVENT_MASK
            );
          }

          @Override
          public void uninstallUI(JComponent c) {
            JLayer jlayer = (JLayer)c;
            jlayer.setLayerEventMask(0);
            super.uninstallUI(c);
          }

          @Override
          public void paint (Graphics g, JComponent c) {
            Graphics2D g2 = (Graphics2D)g.create();

            // Paint the view.
            super.paint (g2, c);

            if (mActive) {
              // Create a radial gradient, transparent in the middle.
              java.awt.geom.Point2D center = new java.awt.geom.Point2D.Float(mX, mY);
              float radius = 72;
              float[] dist = {0.0f, 1.0f};
              Color[] colors = {new Color(0.0f, 0.0f, 0.0f, 0.0f), Color.BLACK};
              RadialGradientPaint p =
                  new RadialGradientPaint(center, radius, dist, colors);
              g2.setPaint(p);
              g2.setComposite(AlphaComposite.getInstance(
                  AlphaComposite.SRC_OVER, .6f));
              g2.fillRect(0, 0, c.getWidth(), c.getHeight());
            }

            g2.dispose();
          }

          @Override
          protected void processMouseEvent(MouseEvent e, JLayer l) {
            if (e.getID() == MouseEvent.MOUSE_ENTERED) mActive = true;
            if (e.getID() == MouseEvent.MOUSE_EXITED) mActive = false;
            l.repaint();
          }

          @Override
          protected void processMouseMotionEvent(MouseEvent e, JLayer l) {
            Point p = SwingUtilities.convertPoint(e.getComponent(), e.getPoint(), l);
            mX = p.x;
            mY = p.y;
            l.repaint();
          }

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 毛片a精品**国产| 欧美精品欧美人与动人物牲交| 久草热8精品视频在线观看| 久久久久人妻精品一区二区三区 | 国产精品白丝AV网站| 欧美成人精品高清在线播放| 免费精品99久久国产综合精品 | 99精品热这里只有精品 | 国产精品高清一区二区人妖| 中文字幕无码精品亚洲资源网久久| 国产成人高清精品免费观看| 国产乱人伦偷精品视频免下载| 亚洲精品无码激情AV| 九九精品在线视频| 国产精品毛片a∨一区二区三区| 国产午夜精品视频| 国产乱子伦精品无码码专区| 日韩精品专区在线影院重磅| 青青热久久国产久精品| 国产精品自在线拍国产第一页 | 久久精品毛片免费观看| 亚洲精品无码久久久久AV麻豆| 精品日韩欧美国产| 国产精品免费一区二区三区| 91麻豆精品国产91久久久久久| 精品国产综合成人亚洲区| 99re6这里有精品热视频| 国产精品一区二区久久国产| 精品爆乳一区二区三区无码av| 久热这里只有精品视频6| 无码精品人妻一区二区三区中| 中文字幕久久精品无码| 亚洲国产精品无码专区影院| 亚洲国产精品视频| 亚洲中文久久精品无码| 日韩精品专区AV无码| 久久99精品国产麻豆 | 久久久久人妻精品一区| 久久精品午夜一区二区福利| 国产精品无套内射迪丽热巴| 97在线精品视频|