当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·vb调用excel的问题    »显示摘要«
    摘要: public sub openexcel(destinationfilename as string) dim xlapp as excel.application dim xlbook, xlsheet on error goto cannotopen on error resume next set xlapp = excel.application set xlapp = creat......
 ·基础问题 基本控件的使用    »显示摘要«
    摘要: 1。listview如何动态的添加删除某些item? 2。如何使得新建的窗口(form)在使用show的时候能够显示但是无论在任务栏 或者是任务管理器里面都没有新建的窗口的名字也就是说没有办法使用alt+tab把他切换出来 有没有什么解决的办法? 因为在主窗口最大话的时候show出了新的窗口然后点击最小话主窗口 新建的也跟着缩小 还原主窗口的话 新建窗口就到后面去了 必须缩小主窗口 把他拉......


jbuilder7中有没有像VC中的group box的控件

如有如何实现,没有的话也请告之实现的代码。谢谢。

NO.1   作者: newman0708

1)简单些  
  public   class   Compement_Titleborder_study2   extends   JFrame   {  
   
      public   Compement_Titleborder_study2()   {  
          super("Compement_Titleborder_study2");  
          JCheckBox   title   =   new   JCheckBox("Title");  
          title.setSelected(true);  
          /*p1.setEnabled(false);//可用这句来完成:初始为disable  
          */  
          final   CompTitledPane   p1   =   new   CompTitledPane(title);  
          title.addItemListener(new   ItemListener()   {  
              public   void   itemStateChanged(ItemEvent   e)   {  
                  p1.setEnabled(e.getStateChange()   ==   ItemEvent.SELECTED);  
              }  
          });  
          APanel   p2   =   new   APanel();  
          p1.setTransmittingAllowed(true);//???  
          p1.setTransmitter(p2);  
          p1.getContentPane().add(p2);  
          getContentPane().add(p1,   BorderLayout.CENTER);  
      }  
   
      class   APanel   extends   JPanel   implements   StateTransmitter   {  
          JButton         button;  
          JTextField   textField;  
   
          APanel()   {  
              button   =   new   JButton("abc");  
              button.addActionListener(new   ActionListener()   {  
                  public   void   actionPerformed(ActionEvent   e)   {  
                      System.out.println("Ouch!");  
                  }  
              });  
              textField   =   new   JTextField(10);  
              textField.setText("text");  
              add(button       ,   BorderLayout.NORTH);  
              add(textField,   BorderLayout.SOUTH);  
          }  
   
          public   void   setChildrenEnabled(boolean   enable)   {  
              button.setEnabled(enable);  
              textField.setEnabled(enable);  
          }  
      }  
   
   
      public   static   void   main   (String   args[])   {  
          Compement_Titleborder_study2   frame   =   new   Compement_Titleborder_study2();  
          frame.addWindowListener(new   WindowAdapter()   {  
              public   void   windowClosing(WindowEvent   e)   {  
  System.exit(0);  
              }  
          });  
          frame.setSize(280,   110);  
          frame.setVisible(true);  
      }  
  }

NO.2   作者: newman0708

2)复杂些  
  package   swing_super_example_border;  
   
  /**  
    *   <p>Title:   Swing_Super_Example</p>  
    *   <p>Description:   Swing_Example是网上下载的例子。</p>  
    *   <p>Copyright:   Copyright   (c)   2002</p>  
    *   <p>Company:   </p>  
    *   @author   unascribed  
    *   @version   1.0  
    */  
  import   java.awt.*;  
  import   java.awt.event.*;  
  import   javax.swing.*;  
  import   javax.swing.border.*;  
   
  //一般自己更改的地方仅是frame中的SwitchPanel  
  //----------------------------自己定义的frame-------------------------------  
  public   class   Compement_Titleborder_study   extends   JFrame   {  
   
      String   title   =   "<html>Title   ("+   "<font   color=\"#ffffff\"><i>JLabel</i></font>"+   ")";  
   
      public   Compement_Titleborder_study()   {  
          super("Compement_Titleborder_study");  
          JLabel   titleLabel   =   new   JLabel(title);  
          CompTitledPane   p1   =   new   CompTitledPane(titleLabel);//  
          JPanel   p   =   p1.getContentPane();  
          p.setLayout(new   BorderLayout());  
          p.add(new   SwitchPanel(p1),   BorderLayout.CENTER);//  
          getContentPane().add(p1,   BorderLayout.CENTER);  
      }  
   
      class   SwitchPanel   extends   JPanel   implements   ActionListener   {  
          String[]   posStr   =   {"",   "ABOVE_TOP"       ,   "TOP"       ,   "BELOW_TOP"  
                                                    ,   "ABOVE_BOTTOM",   "BOTTOM",   "BELOW_BOTTOM"};  
          String[]   jusStr   =   {"",   "LEFT"                 ,   "CENTER",   "RIGHT"};  
          TitledBorder   border;//TitledBorder是个类  
          CompTitledPane   panel;  
   
          SwitchPanel(CompTitledPane   panel)   {  
              this.panel   =   panel;  
              this.border   =   (TitledBorder)panel.getBorder();  
              add(createPanel("Position"           ,posStr,   2));  
              add(createPanel("Justification",jusStr,   1));  
          }  
   
          JPanel   createPanel(String   str,   String[]   strs,   int   selectPos)   {//selectPos是默认选中项  
              JPanel   p   =   new   JPanel();  
              p.setLayout(new   GridLayout(strs.length,   1));  
              p.add(new   JLabel(str));  
              ButtonGroup   g   =   new   ButtonGroup();  
              for   (int   i=1;i<strs.length;i++)   {  
                  JRadioButton   b   =   new   JRadioButton(strs[i]);  
                  if   (i   ==   selectPos)   {  
                      b.setSelected(true);  
                  }  
                  p.add(   b   );  
                  g.add(   b   );  
                  b.addActionListener(this);  
              }  
              return   p;  
          }  
   
          public   void   actionPerformed(ActionEvent   e)   {  
              JRadioButton   b   =   (JRadioButton)e.getSource();  
              String   label   =   b.getText();  
              for   (int   i=1;   i<posStr.length;   i++)   {  
                  if   (label.equals(posStr[i]))   {//判断标题是否相同  
                      border.setTitlePosition(i);//数组的顺序是固定的,不可颠倒。  
                      panel.revalidate();//重绘  
                      panel.repaint();  
                      return;  
                  }  
              }  
              for   (int   i=1;   i<jusStr.length;   i++)   {  
                  if   (label.equals(jusStr[i]))   {  
                      border.setTitleJustification(i);  
                      panel.revalidate();  
                      panel.repaint();  
                      return;  
                  }  
              }  
          }  
      }  
   
   
      public   static   void   main   (String   args[])   {  
          Compement_Titleborder_study   frame   =   new   Compement_Titleborder_study();  
          frame.addWindowListener(new   WindowAdapter()   {  
              public   void   windowClosing(WindowEvent   e)   {  
  System.exit(0);  
              }  
          });  
          frame.setSize(280,   230);  
          frame.setVisible(true);  
      }  
  }  
   
  //关键是下面三个类  
  //---------------------------处理标题---------------------------  
   
  class   CompTitledPane   extends   JPanel   {  
      protected   CompTitledBorder   border;  
      protected   JComponent   component;  
      protected   JPanel   panel;  
      protected   boolean   transmittingAllowed;  
      protected   StateTransmitter   transmitter;  
   
      public   CompTitledPane()   {  
          this(new   JLabel("Title"));  
          //   debug  
          //   JLabel   label   =   (JLabel)getTitleComponent();  
          //   label.setOpaque(true);  
          //   label.setBackground(Color.yellow);  
      }  
   
      public   CompTitledPane(JComponent   component)   {//将标题控件传入  
          this.component   =   component;  
          border   =   new   CompTitledBorder(component);  
          setBorder(border);  
          panel   =   new   JPanel();  
          setLayout(null);  
          add(component);  
          add(panel);  
          transmittingAllowed   =   false;  
          transmitter   =   null;  
      }  
   
      public   JComponent   getTitleComponent()   {//标题控件  
          return   component;  
      }  
   
      public   void   setTitleComponent(JComponent   newComponent)   {//设置新的标题控件  
          remove(component);  
          add(newComponent);  
          border.setTitleComponent(newComponent);  
          component   =   newComponent;  
      }  
   
      public   JPanel   getContentPane()   {  
          return   panel;  
      }  
   
      public   void   doLayout()   {  
          Insets   insets   =   getInsets();//容器边的代表  
          Rectangle   rect   =   getBounds();//矩形区域  
          rect.x   =   0;  
          rect.y   =   0;  
   
          Rectangle   compR   =   border.getComponentRect(rect,insets);  
          component.setBounds(compR);  
          rect.x   +=   insets.left;  
          rect.y   +=   insets.top;  
          rect.width     -=   insets.left   +   insets.right;  
          rect.height   -=   insets.top     +   insets.bottom;  
          panel.setBounds(rect);  
      }  
   
      public   void   setTransmittingAllowed(boolean   enable)   {//允许部件被disable  
          transmittingAllowed   =   enable;  
      }  
       
      public   boolean   getTransmittingAllowed()   {  
          return   transmittingAllowed;  
      }  
   
      public   void   setTransmitter(StateTransmitter   transmitter)   {  
          this.transmitter   =   transmitter;  
      }  
   
      public   StateTransmitter   getTransmitter()   {  
          return   transmitter;  
      }  
   
      public   void   setEnabled(boolean   enable)   {  
          super.setEnabled(enable);  
          if   (transmittingAllowed   &&   transmitter   !=   null)   {  
              transmitter.setChildrenEnabled(enable);  
          }  
      }  
  }  
  //-----------------------------接口定义-------------------------  
   
    interface   StateTransmitter   {  
   
      public   void   setChildrenEnabled(boolean   enable);  
   
  }  
   
  //   sample  
  //  
  //     public   void   setChildrenEnabled(boolean   enable)   {  
  //  
  //         Component[]   children   =   panel.getComponents();  
  //         for(int   i=0;   i<children.length;   i++)   {  
  //             System.out.println("   "   +   i   +  
  //                                                   "   "   +   children[i].getClass().getName()   +  
  //                                                   "   "   +   enable);  
  //             children[i].setEnabled(enable);  
  //         }  
  //     }  
  //

NO.3   作者: newman0708

//-------------------------------边框设置-----------------------  
   
    class   CompTitledBorder   extends   TitledBorder   {  
      protected   JComponent   component;  
   
      public   CompTitledBorder(JComponent   component)   {  
          this(null,   component,   LEFT,   TOP);  
      }  
   
      public   CompTitledBorder(Border   border)   {  
          this(border,   null,   LEFT,   TOP);  
      }  
   
      public   CompTitledBorder(Border   border,   JComponent   component)   {  
          this(border,   component,   LEFT,   TOP);  
      }  
   
      public   CompTitledBorder(Border           border,  
                                                      JComponent   component,  
                                                      int                 titleJustification,  
                                                      int                 titlePosition)             {  
          super(border,   null,   titleJustification,  
                                                  titlePosition,   null,   null);  
          this.component   =   component;  
          if   (border   ==   null)   {  
              this.border   =   super.getBorder();  
          }  
      }  
   
   
      public   void   paintBorder(Component   c,   Graphics   g,  
                                                      int   x,   int   y,   int   width,   int   height)   {  
          Rectangle   borderR   =   new   Rectangle(x             +     EDGE_SPACING,  
                                                                              y             +     EDGE_SPACING,  
                                                                              width     -   (EDGE_SPACING   *   2),  
                                                                              height   -   (EDGE_SPACING   *   2));  
          Insets   borderInsets;  
          if   (border   !=   null)   {  
              borderInsets   =   border.getBorderInsets(c);  
          }   else   {  
              borderInsets   =   new   Insets(0,   0,   0,   0);  
          }  
   
          Rectangle   rect   =   new   Rectangle(x,y,width,height);  
          Insets   insets   =   getBorderInsets(c);  
          Rectangle   compR   =   getComponentRect(rect,   insets);  
          int   diff;  
          switch   (titlePosition)   {  
              case   ABOVE_TOP:  
                  diff   =   compR.height   +   TEXT_SPACING;  
                  borderR.y   +=   diff;  
                  borderR.height   -=   diff;  
                  break;  
              case   TOP:  
              case   DEFAULT_POSITION:  
                  diff   =   insets.top/2   -   borderInsets.top   -   EDGE_SPACING;  
                  borderR.y   +=   diff;  
                  borderR.height   -=   diff;  
                  break;  
              case   BELOW_TOP:  
              case   ABOVE_BOTTOM:  
                  break;  
              case   BOTTOM:  
                  diff   =   insets.bottom/2   -   borderInsets.bottom   -   EDGE_SPACING;  
                  borderR.height   -=   diff;  
                  break;  
              case   BELOW_BOTTOM:  
                  diff   =   compR.height   +   TEXT_SPACING;  
                  borderR.height   -=   diff;  
                  break;  
          }  
          border.paintBorder(c,   g,   borderR.x,           borderR.y,  
                                                            borderR.width,   borderR.height);  
          Color   col   =   g.getColor();  
          g.setColor(c.getBackground());  
          g.fillRect(compR.x,   compR.y,   compR.width,   compR.height);  
          g.setColor(col);  
          component.repaint();  
      }  
   
   
   
      public   Insets   getBorderInsets(Component   c,   Insets   insets)   {  
          Insets   borderInsets;  
          if   (border   !=   null)   {  
              borderInsets     =   border.getBorderInsets(c);  
          }   else   {  
              borderInsets     =   new   Insets(0,0,0,0);  
          }  
          insets.top         =   EDGE_SPACING   +   TEXT_SPACING   +   borderInsets.top;  
          insets.right     =   EDGE_SPACING   +   TEXT_SPACING   +   borderInsets.right;  
          insets.bottom   =   EDGE_SPACING   +   TEXT_SPACING   +   borderInsets.bottom;  
          insets.left       =   EDGE_SPACING   +   TEXT_SPACING   +   borderInsets.left;  
   
          if   (c   ==   null   ||   component   ==   null)   {  
              return   insets;  
          }  
   
          int   compHeight   =   0;  
          if   (component   !=   null)   {  
              compHeight   =   component.getPreferredSize().height;  
          }  
   
          switch   (titlePosition)   {  
              case   ABOVE_TOP:  
                  insets.top         +=   compHeight   +   TEXT_SPACING;  
                  break;  
              case   TOP:  
              case   DEFAULT_POSITION:  
                  insets.top         +=   Math.max(compHeight,borderInsets.top)   -   borderInsets.top;  
                  break;  
              case   BELOW_TOP:  
                  insets.top         +=   compHeight   +   TEXT_SPACING;  
                  break;  
              case   ABOVE_BOTTOM:  
                  insets.bottom   +=   compHeight   +   TEXT_SPACING;  
                  break;  
              case   BOTTOM:  
                  insets.bottom   +=   Math.max(compHeight,borderInsets.bottom)   -   borderInsets.bottom;  
                  break;  
              case   BELOW_BOTTOM:  
                  insets.bottom   +=   compHeight   +   TEXT_SPACING;  
                  break;  
          }  
          return   insets;  
      }  
   
      public   JComponent   getTitleComponent()   {  
          return   component;  
      }  
   
      public   void   setTitleComponent(JComponent   component)   {  
          this.component   =   component;  
      }  
   
  //得到边框的矩形区域  
      public   Rectangle   getComponentRect(Rectangle   rect,Insets   borderInsets)   {//矩形区域和边线传入  
          Dimension   compD   =   component.getPreferredSize();//获取标题的大小  
          Rectangle   compR   =   new   Rectangle(0,0,compD.width,compD.height);//创建矩形区域  
          switch   (titlePosition)   {//垂直判断  
              case   ABOVE_TOP:  
                  compR.y   =   EDGE_SPACING;  
                  break;  
              case   TOP:  
              case   DEFAULT_POSITION:  
                  compR.y   =   EDGE_SPACING   +  
                                    (borderInsets.top   -EDGE_SPACING   -TEXT_SPACING   -compD.height)/2;  
                  break;  
              case   BELOW_TOP:  
                  compR.y   =   borderInsets.top   -   compD.height   -   TEXT_SPACING;  
                  break;  
              case   ABOVE_BOTTOM:  
                  compR.y   =   rect.height   -   borderInsets.bottom   +   TEXT_SPACING;  
                  break;  
              case   BOTTOM:  
                  compR.y   =   rect.height   -   borderInsets.bottom   +   TEXT_SPACING   +  
                                    (borderInsets.bottom   -EDGE_SPACING   -TEXT_SPACING   -compD.height)/2;  
                  break;  
              case   BELOW_BOTTOM:  
                  compR.y   =   rect.height   -   compD.height   -   EDGE_SPACING;  
                  break;  
          }  
          switch   (titleJustification)   {//水平判断  
              case   LEFT:  
              case   DEFAULT_JUSTIFICATION:  
                  compR.x   =   TEXT_INSET_H   +   borderInsets.left;  
                  break;  
              case   RIGHT:  
                  compR.x   =   rect.width   -   borderInsets.right   -TEXT_INSET_H   -compR.width;  
                  break;  
              case   CENTER:  
                  compR.x   =   (rect.width   -   compR.width)   /   2;  
                  break;  
          }  
          return   compR;  
      }  
   
  }  
   
   
  //------------------------------------------------------  
   
 


    摘要: 我的程序里为什么总要提示“access violation at address 77fbe65f in"ntdule.dll".write.of address 0046dbe1” ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE