<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java究竟怎么玩?

      天地程序已定棋,人間大數待變局

        博客園  :: 首頁  :: 新隨筆  :: 聯系 :: 訂閱 訂閱  :: 管理
      Java實現類Windows導航欄

      在Windows系統中,通常都會有左側導航欄以供選擇,而Java架構下并沒有給我們提供同樣的組件,但是構建同樣的東西實際上是很容易的。

       
      package org.loon.framework.swing.test;

      import java.awt.BorderLayout;
      import java.awt.Color;
      import java.awt.Component;
      import java.awt.Dimension;
      import java.awt.EventQueue;
      import java.awt.Font;
      import java.awt.GradientPaint;
      import java.awt.Graphics;
      import java.awt.Graphics2D;
      import java.awt.GridLayout;
      import java.awt.Insets;
      import java.awt.Rectangle;

      import java.awt.event.ComponentAdapter;
      import java.awt.event.ComponentEvent;
      import java.awt.event.MouseAdapter;
      import java.awt.event.MouseEvent;
      import java.util.ArrayList;
      import java.util.Iterator;
      import java.util.List;

      import javax.swing.BorderFactory;
      import javax.swing.ButtonGroup;
      import javax.swing.JCheckBox;
      import javax.swing.JComponent;
      import javax.swing.JFrame;
      import javax.swing.JLabel;
      import javax.swing.JPanel;
      import javax.swing.JRadioButton;
      import javax.swing.JScrollPane;
      import javax.swing.JSplitPane;
      import javax.swing.SpringLayout;
          import javax.swing.WindowConstants;
      import javax.swing.border.Border;

      /**
       * <p>
       * Title: LoonFramework
       * </p>
       * <p>
       * Description:
       * </p>
       * <p>
       * Copyright: Copyright (c) 2007
       * </p>
       * <p>
       * Company: LoonFramework
       * </p>
       * 
       * 
      @author chenpeng
       * @email:ceponline@yahoo.com.cn
       * 
      @version 0.1
       
      */


      public class ExampleAccordion extends JPanel {
          
      /**
           * 
           
      */

          
      private static final long serialVersionUID = 1L;

          
      private final JPanel panel = new JPanel();

          
      private final JLabel label = new JLabel();

          
      // 分割窗體
          private final JSplitPane split = new JSplitPane();

          
      private final JScrollPane scroll;

          
      // 折疊效果
          public ExampleAccordion() {
              
      super(new BorderLayout());
              panel.setOpaque(
      true);
              panel.setBackground(
      new Color(116149226));
              
      // 滾動條
              scroll = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                      JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
              scroll.getVerticalScrollBar().setUnitIncrement(
      10);
              scroll.getViewport().add(panel);

              
      // 構建數據列表
              List panelList = makeList();
              
      // 設定監聽
              accordionListener exr = new accordionListener() {
                  
      public void accordionStateChanged(accordionEvent e) {
                      initComponent();
                  }

              }
      ;
              
      for (Iterator it = panelList.iterator(); it.hasNext();) {
                  AccordionPanel epl 
      = (AccordionPanel) it.next();
                  addComponent(epl);
                  epl.addaccordionListener(exr);
              }

              
      // 加載滾動條監聽
              scroll.getViewport().addComponentListener(new ComponentAdapter() {
                  
      public void componentResized(ComponentEvent e) {
                      initComponent();
                  }

              }
      );
              
      // 設定大小
              label.setPreferredSize(new Dimension(200260));

              scroll.setPreferredSize(
      new Dimension(200260));

              scroll.setMinimumSize(
      new Dimension(200260));

              split.setLeftComponent(scroll);
              split.setRightComponent(label);

              split.setDividerSize(
      1);
              split.setBackground(Color.WHITE);
              add(split, BorderLayout.CENTER);
          }


          
      public void initComponent() {
              Rectangle re 
      = scroll.getViewport().getViewRect();
              Insets ins 
      = panel.getInsets();
              
      int cw = (int) re.getWidth() - ins.left - ins.right - 20;
              
      int ch = 10;
              Component[] list 
      = panel.getComponents();
              
      for (int i = 0; i < list.length; i++{
                  JComponent tmp 
      = (JComponent) list[i];
                  
      int th = tmp.getPreferredSize().height;
                  tmp.setPreferredSize(
      new Dimension(cw, th));
                  ch 
      = ch + th + 10;
              }

              panel.setPreferredSize(
      new Dimension((int) re.getWidth(), ch + ins.top
                      
      + ins.bottom));
              panel.revalidate();
          }


          
      public void addComponent(Component label) {
              SpringLayout layout 
      = new SpringLayout();
              Component[] list 
      = panel.getComponents();
              
      if (list.length == 0{
                  layout.putConstraint(SpringLayout.WEST, label, 
      10,
                          SpringLayout.WEST, panel);
                  layout.putConstraint(SpringLayout.NORTH, label, 
      10,
                          SpringLayout.NORTH, panel);
              }
       else {
                  JComponent cmp 
      = null;
                  
      for (int i = 0; i < list.length; i++{
                      JComponent tmp 
      = (JComponent) list[i];
                      layout.putConstraint(SpringLayout.WEST, tmp, 
      10,
                              SpringLayout.WEST, panel);
                      
      if (cmp == null{
                          layout.putConstraint(SpringLayout.NORTH, tmp, 
      10,
                                  SpringLayout.NORTH, panel);
                      }
       else {
                          layout.putConstraint(SpringLayout.NORTH, tmp, 
      10,
                                  SpringLayout.SOUTH, cmp);
                      }

                      cmp 
      = tmp;
                  }

                  layout.putConstraint(SpringLayout.WEST, label, 
      10,
                          SpringLayout.WEST, panel);
                  layout.putConstraint(SpringLayout.NORTH, label, 
      10,
                          SpringLayout.SOUTH, cmp);
              }

              panel.add(label);
              panel.setLayout(layout);
              initComponent();
          }


          
      private List makeList() {
              List panelList 
      = new ArrayList();
              panelList.add(
      new AccordionPanel("列表1"{
                  
      /**
                   * 
                   
      */

                  
      private static final long serialVersionUID = 1L;

                  
      public JPanel makePanel() {
                      JPanel pnl 
      = new JPanel(new GridLayout(01));
                      JCheckBox c1 
      = new JCheckBox("aaaaaa");
                      JCheckBox c2 
      = new JCheckBox("bbbbbb");
                      c1.setOpaque(
      false);
                      c2.setOpaque(
      false);
                      pnl.add(c1);
                      pnl.add(c2);
                      pnl.setSize(
      new Dimension(060));
                      pnl.setBorder(BorderFactory.createEmptyBorder(
      515515));
                      
      return pnl;
                  }

              }
      );
              panelList.add(
      new AccordionPanel("列表2"{
                  
      /**
                   * 
                   
      */

                  
      private static final long serialVersionUID = 1L;

                  
      public JPanel makePanel() {
                      JPanel pnl 
      = new JPanel(new GridLayout(01));
                      pnl.add(
      new JLabel("辛苦遭逢起一經"));
                      pnl.add(
      new JLabel("干戈寥落四周星"));
                      pnl.add(
      new JLabel("山河破碎風飄絮"));
                      pnl.add(
      new JLabel("身世浮沉雨打萍"));
                      pnl.setSize(
      new Dimension(0100));
                      pnl.setBorder(BorderFactory.createEmptyBorder(
      515515));
                      
      return pnl;
                  }

              }
      );
              panelList.add(
      new AccordionPanel("列表3"{
                  
      /**
                   * 
                   
      */

                  
      private static final long serialVersionUID = 1L;

                  
      public JPanel makePanel() {
                      JPanel pnl 
      = new JPanel(new GridLayout(01));
                      JRadioButton b1 
      = new JRadioButton("aa");
                      JRadioButton b2 
      = new JRadioButton("bb");
                      JRadioButton b3 
      = new JRadioButton("cc");
                      b1.setOpaque(
      false);
                      b2.setOpaque(
      false);
                      b3.setOpaque(
      false);
                      pnl.add(b1);
                      pnl.add(b2);
                      pnl.add(b3);
                      ButtonGroup bg 
      = new ButtonGroup();
                      bg.add(b1);
                      bg.add(b2);
                      bg.add(b3);
                      b1.setSelected(
      true);
                      pnl.setSize(
      new Dimension(080));
                      pnl.setBorder(BorderFactory.createEmptyBorder(
      515515));
                      
      return pnl;
                  }

              }
      );
              
      return panelList;
          }


          
      public static void main(String[] args) {
              EventQueue.invokeLater(
      new Runnable() {
                  
      public void run() {
                      createUI();
                  }

              }
      );
          }


          
      public static void createUI() {
              JFrame frame 
      = new JFrame("JAVA實現類Windows導航欄");
              frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
              frame.getContentPane().add(
      new ExampleAccordion());
              frame.pack();
              frame.setLocationRelativeTo(
      null);
              frame.setVisible(
      true);
          }

      }


      class accordionEvent extends java.util.EventObject {
          
      /**
           * 
           
      */

          
      private static final long serialVersionUID = 1L;

          
      public accordionEvent(Object source) {
              
      super(source);
          }

      }


      interface accordionListener {
          
      public void accordionStateChanged(accordionEvent e);
      }


      abstract class AccordionPanel extends JPanel {
          
      abstract public JPanel makePanel();

          
      private final String _title;

          
      private final JLabel label;

          
      private final JPanel panel;

          
      private boolean openFlag = false;

          
      public AccordionPanel(String title) {
              
      super(new BorderLayout());
              _title 
      = title;
              label 
      = new JLabel("↓ " + title) {
                  
      /**
                   * 
                   
      */

                  
      private static final long serialVersionUID = 1L;

                  
      protected void paintComponent(Graphics g) {
                      Graphics2D g2 
      = (Graphics2D) g;
                      
      // 繪制漸變
                      g2.setPaint(new GradientPaint(500, Color.WHITE, getWidth(),
                              getHeight(), 
      new Color(199212247)));
                      g2.fillRect(
      00, getWidth(), getHeight());
                      
      super.paintComponent(g);
                  }

              }
      ;
              label.addMouseListener(
      new MouseAdapter() {
                  
      public void mousePressed(MouseEvent evt) {
                      openFlag 
      = !openFlag;
                      initPanel();
                      fireaccordionEvent();
                  }

              }
      );
              label.setForeground(
      new Color(3393198));
              label.setFont(
      new Font("宋體"112));
              label.setBorder(BorderFactory.createEmptyBorder(
      2522));
              panel 
      = makePanel();
              panel.setOpaque(
      true);
              Border outBorder 
      = BorderFactory.createMatteBorder(0222,
                      Color.WHITE);
              Border inBorder 
      = BorderFactory.createEmptyBorder(10101010);
              Border border 
      = BorderFactory.createCompoundBorder(outBorder, inBorder);
              panel.setBorder(border);
              panel.setBackground(
      new Color(240240255));
              add(label, BorderLayout.NORTH);
          }


          
      public boolean isSelected() {
              
      return openFlag;
          }


          
      public void setSelected(boolean flg) {
              openFlag 
      = flg;
              initPanel();
          }


          
      protected void initPanel() {
              
      if (isSelected()) {
                  label.setText(
      "↑ " + _title);
                  add(panel, BorderLayout.CENTER);
                  setPreferredSize(
      new Dimension(getSize().width,
                          label.getSize().height 
      + panel.getSize().height));
              }
       else {
                  label.setText(
      "↓ " + _title);
                  remove(panel);
                  setPreferredSize(
      new Dimension(getSize().width,
                          label.getSize().height));
              }

              revalidate();
          }


          
      protected ArrayList accordionListenerList = new ArrayList();

          
      public void addaccordionListener(accordionListener listener) {
              
      if (!accordionListenerList.contains(listener))
                  accordionListenerList.add(listener);
          }


          
      public void removeaccordionListener(accordionListener listener) {
              accordionListenerList.remove(listener);
          }


          
      public void fireaccordionEvent() {
              List list 
      = (List) accordionListenerList.clone();
              Iterator it 
      = list.iterator();
              accordionEvent e 
      = new accordionEvent(this);
              
      while (it.hasNext()) {
                  accordionListener listener 
      = (accordionListener) it.next();
                  listener.accordionStateChanged(e);
              }

          }

      }



      效果圖:
      posted on 2007-12-18 15:17  cping  閱讀(766)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 自拍亚洲一区欧美另类| 中文字幕人妻无码一区二区三区 | 榕江县| 伊人久久久av老熟妇色| 激情综合网激情综合网五月| 国产粉嫩美女一区二区三| 少妇xxxxx性开放| 一区二区三区无码免费看| 国产精品剧情亚洲二区| 亚洲最大中文字幕无码网站| 亚洲久久色成人一二三区| 成人综合人人爽一区二区| 国产午夜福利精品久久不卡| 亚洲精品一区二区美女| 亚洲欧美人成人让影院| 香蕉久久久久久久AV网站| 玩弄放荡人妻少妇系列 | 亚洲乱码国产乱码精品精| 国产精品 第一页第二页| 成人欧美日韩一区二区三区| 一本色道久久加勒比综合| 亚洲大尺度一区二区av| 野花香视频在线观看免费高清版| 三级4级全黄60分钟| 亚洲日本欧洲二区精品| 一本大道色婷婷在线| 亚洲精品第一页中文字幕| 国产精品二区中文字幕| 丰满熟妇人妻av无码区| 国产成人无码av一区二区| 最新偷拍一区二区三区| 龙岩市| 国产福利酱国产一区二区| 欧美日韩性高爱潮视频| 午夜大片免费男女爽爽影院| 色综合天天综合网国产人| 视频二区国产精品职场同事| 国产AV大陆精品一区二区三区| 在线播放国产精品三级网| 久久久久久亚洲精品a片成人| 亚洲中文字幕一区二区|