`
rcyl2003
  • 浏览: 236645 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

JAVA界面组件---swing标签与按钮的使用与介绍

阅读更多
Border,Icon,JLabel,JButton,JToggleButton
6-1:Border的使用
Border类是应用在描绘组件的边界,Border本身是一个interface,里面定义了3个方法,为getBorderInsets()、isBorderOpaque()
、与isBorderOpaque()、与paintBorder().若您想使用Border类来绘制你的窗口边界,您必须先实现(implements)这3个方法,可说
是有点麻烦。还好,java本身提供了另一个类,它已经实现了Border类所有的方法,且提供许多不同的边界样式供用户使用,用户
只需要选择到底要用哪个样式即可,不需要理会如何去画出这个边界,因为这个类已经都帮您实现好了,这个类就是
BorderFactory,下面是borderFactory的类层次结构图。
BorderFactory的类层次结构图:
  java.lang.Object
         -----------javax.swing.BorderFactory
SimpleBorder.java

import javax.swing.border.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class SimpleBorder{
  public static void main(String[] args){
    JFrame f=new JFrame("SimpleBorder");
    Container content=f.getContentPane();
    JButton b=new JButton();
    b.setBorder(BorderFactory.createLineBorder(Color.blue,10);//createLineBorder方法指定边界的颜色与宽度.
    content.add(b);
    f.setSize(200,150);
    f.show();
    f.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
               System.exit(0);
            }
    });  
  }
}
BorderFactory提供了以下方法:
-------------------------------------------------------
  static Border          creatBevelBorder(int type)建立一个立体的边界,并由参数type指定为凹陷或突起,type可为
                          BevelBorder.LOWERED表示凹陷,或是BevelBorder.RAISED表示突起。
  static Border          createBevelBorder(int type,Color highlight,Color shadow)建立一个立体的边界,并指定突边与阴
                          影的颜色。
  static Border          createBevelBorder(int type,Color highlightOuter,Color highlightInner,Color shadowOuter
                          ,Color shadowInner)建立一个立体的边界,并指定内外部的突边与阴影的颜色。
  static CompoundBorder  createCompoundBorder()建立一个复合边界。
  static CompoundBorder  createCompoundBorder(Border outsideBorder,Border insideBorder)建立一个复合边界,并指定它
                         的内外边界。
  static Border          createEmptyBorder()建立一个空的边界。
  static Border          createEmptyBorder(int top,int left,int bottom,int right)建立一个空的边界,并指定上下左右
                         的宽度,在这些宽度中不能作绘图的效果。
  static Border          createEtchedBorder()建立一个四周有凹痕的边界。
  static Border          createEtchedBorder(Color highlight,Color shadow)建立一个四周有凹痕的边界,并指定突边与阴影
                         的颜色。
  static Border          createLineBorder(Color color)
                         建立一个线务边界,并指定线条的颜色。
  static Border          createLineBorder(Color color,int thicness)
                         建立一个线务边界,并指定线条的颜色与宽度。
  static Border          createLoweredBevelBorder()建立一个具有凹陷效果的边界,意义与
                         createBevelBorder(BevelBorder.LOWERED)相同。
  static MatteBorder     createMatteBorder(int top,int left,int bottom,int right,Color color)建立一个垫子边界,这跟
                         createEmptyBorder有点像,但可以指定边界颜色。
  static MatteBorder     createMatteBorder(int top,int left,int bottom,int right,Icon tileIcom)建立一个垫子边界,并
                         指定边界的花纹。
  static Border          createRaisedBevelBorder()建立一个具有突起效果的边界,意义与createBevelBorder(BevelBorder.
                         RAISED)相同。
  static TitledBorder    createTitledBorder(Border border)建立一个标题边界,但没有标题名称。
  static TitledBorder    createTitledBorder(Border border,String title)建立一个标题边界,并指定标题名称,标题默认位
                         置是TitledBorder.DEFAULT_JUSTIFICATION与TitledBorder.DEFAULT_POSITION,也就是左上方。
  static TitledBorder    createTitledBorder(Border border,String title,int titleJustification,int titlePosition)
                         建立一个标题边界,并指定标题名称与标题位置,参数titleJustification可为:
                         TitledBorder.LEFT
                         TitledBorder.CENTER
                         TitledBorder.RIGHT
                         TitledBorder.DEFAULT_JUSTIFICATION(leading)
                         参数titlePosition可为:
                           TitedBorder.ABOVE_TOP
                           TitledBorder.TOP(sittin on the top line)
                           TitledBorder.BELOW_TOP
                           TitledBorder.ABOVE_BOTTOM
                           TitledBorder.BOTTOM(sitting on the bottom line)
                           TitledBorder.BELOW_BOTTOM
                           TitledBorder.DEFAULT_POSITION(top)
  static TitledBorder    createTitledBorder(Border border,String title,int titleJustification,int titlePosition,
                          Font titleFont)建立一个标题边界,并指定标题名称,标题位置与字体。
 
  static TitledBorder    createTitledBorder(Border border,String title,int titleJustification,int titlePosition,
                          Font titleFont,Color titleColor)建立一个标题边界,并指定标题名称,标题位置、字体与标题颜
                          色。
  static TitledBorder    createTitledBorder(String title)建立一个标题边界,并指定标题名称,其他为默认值。

BorderDemo.java
import javax.swing.border.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class BorderDemo{
    public static void main(String[] args){
      JFrame f=new JFrame("BorderDemo");
      Container content=f.getContentPane();
      JLabel label=new JLabel();
      //label.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));//凹陷效果
      //label.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));//突起效果
     
      //凹陷效果,并设置突出与阴影的颜色
      //label.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.red,Color.blue));
     
      //凹陷效果,并设置内外部突出与阴影的颜色
      //label.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.red,Color.blue,Color.yellow,Color.green));
     
      /*EmptyBorder:建立一个空的边界,可指定边界的宽度,这在区隔组件之间的距离时可能用到。
       *EtchedBorder:建立一个四周有凹痕的边界,也可以指定突边与阴影的颜色.
       */
      //label.setBorder(BorderFactory.createEtchedBorder());
      
      //设置四周有凹痕的边界,并指定内外部的突边与阴影的颜色
      //label.setBorder(BorderFactory.createEtchedBorder(Color.red,Color.blue));
     
      //LineBorder:建立一个线条边界,并可以指定线条的颜色与宽度。
      //label.setBorder(BorderFactory.createLineBorder(Color.blue,5));
     
      //MatteBorder:建立一个Matte边界,这个方法与createEmptyBorder()有点像,但可以指定边界颜色
      //或利用Icon产生边界花纹.
      //label.setBorder(BorderFactory.createMatteBorder(5,5,5,5,Color.green));
     
     
      //label.setBorder(BorderFactory.createMatteBorder(25,25,25,25,new ImageIcon(".\\icons\\star.gif")));
     
      /*CompoundBorder: 建立一个复合边界,并可以指定它的内外边界,例如我们可以指定它的外边界为LineBorder,
       *它的内边界为MatteBorder。
       */     
      //label.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.blue,5),
      //                BorderFactory.createMatteBorder(20,20,18,18,new ImageIcon(".\\icons\\star.gif"))));
     
      //TitleBorder:建立一个标题边界,我们可以指定边界的标题名称、标题位置、字体与标题颜色。
      //label.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.blue,5),"Line Border"
      //                ,TitledBorder.LEFT,TitledBorder.TOP));
     
      label.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.blue,5),"Line Border"
                      ,TitledBorder.LEFT,TitledBorder.ABOVE_TOP,new Font("SansSerif",Font.ITA_LIC,14),Color.red));
      content.add(label);
      f.setSize(200,150);
      f.show();
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
         System.exit(0);
      }
      });
    }
}

6-2:Icon的使用:
ImageIcon的类层次结构图:
java.lang.Object
   --javax.swing.ImageIcon

ImageIcon的结构函数:
   ImageIcon():建立一个ImageIcon组件。
   ImageIcon(byte[] imageData):建立一个ImageIcon组件,Image的数据放在byte array的数据可从GIF获释JPEG的文件读取面来
                               。
   ImageIcon(byte[] imageData,String description)建立一个ImageIcon组件,Image的数据放在byte array中,而byte array
                              的数据可从GIF获释JPEG的文件读取而来,并多了一个此Icon的描述文字。
   ImageIcon(Image image)利用Image组件,建立一个ImageIcon组件。
   ImageIcon(Image image,String description)利用Image组件,建立一个ImageIcon组件,附加此Icon的描述文字。
   ImageIcon(Staring filename)利用图文件建立一个ImageIcon组件。
   ImageIcon(Staring filename,String description)利用图文件建立一个ImageIcon组件,附加此Icon的描述文字。
   ImageIcon(URL location)利用网址建立一个ImageIcon组件。
   ImageIcon(URL location)利用网址建立一个ImageIcon组件,附加此Icon的描述文字。
ImageIcon.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ImageIconDemo{
   public static void main(String[] args){
      JFrame f=new JFrame("ImageIconDemo");
      Container contentPane=f.getContentPane();
      Icon icon=new ImageIcon(".\\icons\\visa.gif");
      JLabel label=new JLabel(icon,JLabel.CENTER);
      contentPane.add(label);
      f.pack();
      f.show();
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
         System.exit(0);
      }
      });
   }
}

若您想利用读文件的功能,先将图文件转成byte array,再制作Icon组件,你可以用下面的程序帮你完成:
ImageIconDemo.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class ImageIconDemo{
   public static void main(String[] args){
     byte[] image=null;
      JFrame f=new JFrame("ImageIconDemo");
      Container contentPane=f.getContentPane();
      /*在打开文件读文件的过程中可能会发生IOException,因此在下面的程序中用
       *try与catch将此区段包起来。
       */
      try{
      File file=new File(".\\icons\\visa.gif");//利用文件visa.gif建立一个File组件。
                                               
      int size=(int)file.length();//并求出此文件的长度。
      FileInputStream in=new FileInputStream(file);//将文件组件放入FileInputStream中。
      image=new byte[size];
      in.read(image);//将数据文件读进byte array中。
      }catch(IOException e){
      System.err.println("File open falure:"+e.getMessage());
      }
      Icon icon=new ImageIcon(image);
      JLabel label=new JLabel(icon,JLabel.CENTER);
      contentPane.add(label);
      f.pack();
      f.show();
      f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
         System.exit(0);
      }
      });
   }
}

   Icon是一个Interface,里面包含3种空的抽象文法,分别是getIconHeight()、getIconWidth()与paintIcon();若你想使用Icon类
来制作Icon,你必须实现(implements)这3个方法,我们直接来看下面这个例子,你就能清楚如何实现Icon界面建立Icon组件了。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class IconDemo implements Icon{
   int height=50;
   int width=70;
   public int getIconHeight(){
     return height;
   }
   public int getIconWidth(){
   return width;
   }
   public void paintIcon(Component c,Graphics g,int x,int y){
   g.drawRect(x,y,width,height);
   g.fillRect(x,y,width,height);
   g.setColor(Color.blue);
   }
   public static void main(String[] args){
     JFrame f=new JFrame("IconDemo");
     Container contentPane=f.getContentPane();
    
     Icon icon=new IconDemo();
     JLabel label=new JLabel(icon,JLabel.CENTER);
     contentPane.add(label);
     f.pack();
     f.show();
     f.addWindowListener(new WindowAdapter(){
     public void windowClosing(WindowEvent e){
        System.exit(0);
     }
     });
   }  
}
6-3:JLabel的使用:
类层次结构图:
  java.lang.Object
    --java.awt.Component
    --java.awt.Container
     --javax.swing.JComponent
        --javax.swing.JLabel
      在以前的许多范例,我们已经使用过JLabel这个组件,相信大家对此组件应该不会感到陌生,接下来我们来深入了解JLabel
的各种我特性。
     一般而言:我们最常在JLabel上放置文字或图形,也因此我们常常需要调整JLabel上文字或图形。在JLabel实现了
SwingConstants这个interface,而这个interface主要是定义一些组件排列方式的参数:
    TOP
    LEFT
    RIGHT
    BOTTOM
    CENTER
    NORTH
    EAST
    WEST
    SOUTH
    NORTH_EAST
    SOUTH_EAST
    SOUTH_WEST
    NORTH_WEST
    HORIZONTAL
    VERTICAL
    LEADING                         置于前端
    TRAILING                        置于后端。
     在swing中,有相当多的类均实现了SwingConstants这个interface,如AbstractButton、JCheckBoxMenuItem、JLabel、
JProgressBar、JSeparator、JSlider、JTextField、JTabbedPane、JToolbar等等,因此当你使用到这些组件时,你就可以在适当
的时候,利用SwingConstants的参数来定义组件的位置了。
   JLabel共有6种构造函数,如下:
   JLabel构造函数:
      JLabel():建立一个空白的JLabel组件。
      JLabel(Icon image):建立一个含有Icon的JLabel组件,Icon的默认排列方式是CENTER.
      JLabel(Icon image,int horizontalAlignment):建立一个含有Icon的JLabel组件,并指定其排列方式。
      JLabel(String text):建立一个含有文字的JLabel组件,文字的默认排列方式是LEFT.
      JLabel(String text,int horizontalAlignment):建立一个含有文字的JLabel组件,并指定其排列方式。
      JLabel(String text,Icon icon,int horizontalAlignment):建立一个含有文字与Icon的JLabel组件,并指定其排列方式,
                          文字与Icon的间距,默认值是4个pixels.
    在JLabel中,有几个方法可能是常用到的,例如setHorizontalAlignment(int alignment)与setVerticalAlignment(int
alignment),分别是设置标签内组件(文字或Icon)的水平或垂直位置,而setHorizontalTextPosition(int textPosition)与
setVerticalTextPosition(int textPosition)可设置文字相对于Icon的相对位置,另外,setIconTextGap(int iconTextGap)可设
置标签内文字与Icon间的间距、setText(String test)与setIcon(Icon icon)可分别设置标签内的文字与Icon。
JLabelDemo1.java
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JLabelDemo1{
  public static void main(String[] args){
  JFrame f=new JFrame("JLabelDemo1");
  Container contentPane=f.getContentPane();
  JLabel label=new JLabel();
  label.setText("Hello");
  label.setHorizontalAlignment(JLabel.RIGHT);
  label.setVerticalAlignment(JLabel.TOP);
  contentPane.add(label);
  f.pack();
  f.show();
  f.addWindowListener(new WindowAdapter(){
       public void windowClosing(WindowEvent e){
          System.exit(0);
       }
  });
  }
}

我们再来看一个有Icon的例子:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JLabelDemo2{
  public static void main(String[] args){
  JFrame f=new JFrame("JLabelDemo1");
  Container contentPane=f.getContentPane();
  Icon icon=new ImageIcon(".\\icons\\hello.jpg");
  JLabel label=new JLabel("Hello",icon,JLabel.CENTER);//产生一个具有文字与Icon的JLabel组件,
     //并将此文字与Icon置于JLabel的中间。
     label.setHorizontalTextPosition(JLabel.CENTER);//将文字置于Icon的中间,若没有设置此项,默认
     //值为文字在Icon的右边。
     label.setVerticalTextPosition(JLabel.TOP);//将文字置于Icon的上面,若没有设置此项 ,默认值为中间排列
  /*若你在此再加入一行label.setIconTextGap(10);将会加大文字"Hello"与Icon间的间距。
    */
  contentPane.add(label);
  f.pack();
  f.show();
  f.addWindowListener(new WindowAdapter(){
       public void windowClosing(WindowEvent e){
          System.exit(0);
       }
  });
  }
}

6-4:JButton的使用:
JButton的类层次结构图:
   java.lang.Object
    --java.awt.Component
     --javax.swing.JComponent
      --javax.swing.AbstractButton
      --javax.swing.JButton
   JButton是继承AbstractButton类而来,而AbstractButton本身是一个抽象类,里面定义了许多组件设置的方法与组件事件驱动
方法(Event handle),如addActionListener()、setText等,详情请看相关手册,所提供的方法不下50种,可说是非常重要的一个
类。事实上,AbstractButton类不公被JButton所继承,它同时还被JMenuItem、JToggleButton、JCheckBox、JRadioButton等类所
继承,提供给这些类强大且方便的功能,而且在使用上更能掌握这些组件的特性。我们此节先来了解JButton与JToggleButton的特
性,其余类在后面各节介绍。
JButton共有4个构造函数:

JButton():建立一个按钮。
JButton(Icon icon):建立一个有图像的按钮。
JButton(String icon):建立一个有文字的按钮。
JButton(String text,Icon icon):建立一个有图像与文字的按钮。
   由JButton的构造函数可以看出:JButton与JLabel的使用相当类似,只是JButton少了排列方式的参数罢了。要是我们想设置
JButton内文字或图像的水平排列方式,我们可以利用AbstractButton抽象类所提供的setHorizontalAlignment()方法来达成。
JButton在使用上与JLabel相当类似,只是类的设计方式有所不同,JLabel类自行提供组件排列方式的方法,而JButton是继承
AbstractButton抽象类的方法来排列按钮内的内容。为什么JButton不自行提供排列方式等方法呢?主要是因为JButton与JMenuItem
、JToggleButton、JCheckBox、JRadioButton组件有许多共同的物性,例如它们都会有“按”的操作、都可以插入Icon与文字、
都可设置快捷键、都可呈现Enable或Disable状态等等,因此将AbstractButton类独立出来,实现这些共通的方法,再由其他类来继
承,将可增加程序结构对象化与模块化的特性,也让程序更容易维护.
    JButton类所提供的方法非常少,大部份都会用到AbstractButton抽象类所提供的方法。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JButtonDemo1{
   public static void main(String[] args){
     JFrame f=new JFrame("JButtonDemo1");
     Container contentPane=f.getContentPane();
     /*你也可以用下面这个方式代替:
      *JButton b=new JButton();
      *b.setIcon(new ImageIcon(".\\icons\\hand.jpg"));
      *b.setText("按我");
      */
     JButton b=new JButton("按我",new ImageIcon(".\\icons\\hand.jpg"));
     /*如果没有设置文字的位置,系统默认值会将文字置于图形的右边中间位置。
      */
     b.setHorizontalTextPosition(JButton.CENTER);
     b.setVerticalTextPosition(JButton.BOTTOM);
     contentPane.add(b);
     f.pack();
     f.show();
     f.addWindowListener(new WindowAdapter(){
       public void windowClosing(WindowEvent e){
       System.exit(0);
       }
     });
   }
}
6-4-1:在JButton上使用Rollover图像变化:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RolloverDemo{
    public static void main(String[] args){
       JFrame f=new JFrame("RolloverDemo");
       Container contentPane=f.getContentPane();
       Icon rollover=new ImageIcon(".\\icons\\address1.jpg");
       Icon general=new ImageIcon(".\\icons\\address2.jpg");
       Icon press=new ImageIcon(".\\icons\\address3.jpg");
       JButton b=new JButton();
       b.setRolloverEnabled(true);//将Rollver功能打开。
       b.setIcon(general);
       b.setRolloverIcon(rollover);
       b.setPressedIcon(press);
       contentPane.add(b);
       f.pack();
       f.show();
       f.addWindowListener(new WindowAdapter(){
           public void windowClosing(WindowEvent e){
              System.exit(0);
           }
       });
    }
}

6-4-2:在JButton上设置快捷键:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MnemonicButton implements ActionListener{
  public MnemonicButton(){
      JFrame f=new JFrame("MnemonicButton");
      Container contentPane=f.getContentPane();
      JButton b=new JButton("[o]打开新窗口");
      b.setMnemonic('o');
      /*将b加入事件处理模式,当我们按下按钮时,会产生一个事件(ActionEvent),此事件会被ActionListener
       *所接收。而ActionListener是一个interface,里面只有actionPerformed()一个方法,因此我们必须实现
       *actionPerformed()方法,处理我们所要的结果。
       */
      b.addActionListener(this);
      contentPane.add(b);
      f.pack();
      f.show();
      f.addWindowListener(new WindowAdapter(){
           public void windowClosing(WindowEvent e){
              System.exit(0);
           }
      });
  }
  public void actionPerformed(ActionEvent e){
    JFrame newf=new JFrame("新窗口");
    JLabel label=new JLabel("这是新窗口");
    label.setHorizontalAlignment(JLabel.CENTER);
    newf.getContentPane().add(label);
    newf.setSize(100,100);
    newf.show();
  }
  public static void main(String[] args){
    new MnemonicButton();
  }
}

6-4-3:设置默认按钮:
       在java中要设置默认按钮可以使用JRootPane类所提供的setDefaultButton()方法,下面的例子我们将事件处理模式换成另
一种写法,也就是前面所提到的Inner Class匿名类写法,因此在类DefaultButton的右边就不用再写入implements ActionListener
了。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DefaultButton{
  public DefaultButton(){
     JFrame f=new JFrame("DefaultButton");
     Container contentPane=f.getContentPane();
     contentPane.setLayout(new GridLayout(1,2));
     JButton b1=new JButton("Open Text window");
     JButton b2=new JButton("Open Image window");
     b1.setMnemonic('T');
     b2.setMnemonic('I');
     f.getRootPane().setDefaultButton(b1);
     b1.addActionListener(
           new ActionListener(){
              public void actionPerformed(ActionEvent e){
                JFrame newf=new JFrame("新窗口");
                JLabel label=new JLabel("这是文字窗口");
                label.setHorizontalAlignment(JLabel.CENTER);
                newf.getContentPane().add(label);
                newf.setSize(200,200);
                newf.show();
              }
           }
     );
     b2.addActionListener(
           new ActionListener(){
              public void actionPerformed(ActionEvent e){
                JFrame newf=new JFrame("新窗口");
                JLabel label=new JLabel(new ImageIcon(".\\icons\\address1.jpg"));
                label.setHorizontalAlignment(JLabel.CENTER);
                newf.getContentPane().add(label);
                newf.setSize(200,200);
                newf.show();
              }
           }
     );
     contentPane.add(b1);
     contentPane.add(b2);
     f.pack();
     f.show();
     f.addWindowListener(new WindowAdapter(){
     public void windowClosing(WindowEvent e){
        System.exit(0);
     }
     });    
  }
  public static void main(String[] args){
  new DefaultButton();
  }
}

6-5:JToggleButton的使用.
JToggleButton类层次结构图:
java.lang.Object
    --java.awt.Component
      --java.awt.Container
       --javax.swing.JComponent
         --javax.swing.AbstractButton
          --javax.swing.JToggleButton
   JToggleButton跟一般JButton其实很像,主要的差别在于一般的按钮按下去会自动弹回来,而JToggleButton按钮按下去会陷下
去,不会弹回来,除非你再按一次。由上面的类层次结构图可知JToggleButton也继承AbstractButton抽象类而来,因此
JToggleButton组件可以使用所有AbstractButton类所提供的方法。下面是JToggleButton所提供的构造函数:

JToggleButton构造函数:
JToggleButton():建立一个新的JToggleButton。
JToggleButton(Icon icon):建立一个有图像但没有文字的JToggleButton。
JToggleButton(Icon icon,boolean selected):建立一个有图像但没有文字的JToggleButton,且设置其初始状态(有无选取)。
JToggleButton(String text):建立一个有文字的JToggleButton。
JToggleButton(String text,boolean selected):建立一个有文字的JToggleButton,初始状态有无被选取。
JToggleButton(String text,Icon icon):建立一个有文字且有图像的JToggleButton,初始状态为有无被选取。
JToggleButton(String text,Icon icon,boolean selected):建立一个有文字且有图像的JToggleButton,且设置其初始状态(
            有无选取).
例子:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ToggleButton{
   public static void main(String[] args){
     JFrame f=new JFrame("ToggleButton");
     Container contentPane=f.getContentPane();
     contentPane.setLayout(new GridLayout(3,1));
     JToggleButton b1=new JToggleButton("Button 1");
     JToggleButton b2=new JToggleButton("Button 2");
     JToggleButton b3=new JToggleButton("Button 3");
     contentPane.add(b1);
     contentPane.add(b2);
     contentPane.add(b3);
     f.pack();
     f.show();
  f.addWindowListener(new WindowAdapter(){
       public void windowClosing(WindowEvent e){
          System.exit(0);
       }
  });
   }

    在5-5-1节中,我们曾介绍过JButton上使用Rollover的方法,且还有3种方法我们还没有使用过,那就是setDisableSelected
Icon()、setSelectedIcon()与setRolloverSelectedIcon().我们来介绍一下setSelectedIcon()与setRolloverSelectedIcon()方法
,而setDisableSelectedIcon方法就作为习题。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ToggleRovllover{
public static void main(String[] args){
   JFrame f=new JFrame("ToggleRollover");
   Container contentPane=f.getContentPane();
   JToggleButton b=new JToggleButton();
   b.setRolloverEnabled(true);
   b.setIcon(new ImageIcon(".\\icons\\rollover1.jpg"));
   b.setRolloverSelectedIcon(new ImageIcon(".\\icons\\rollover2.jpg"));
   b.setSelectedIcon(new ImageIcon(".\\icons\\rollover3.jpg"));
   contentPane.add(b);
   f.pack();
   f.show();
  f.addWindowListener(new WindowAdapter(){
       public void windowClosing(WindowEvent e){
          System.exit(0);
       }
  });
}
}

}
  
分享到:
评论

相关推荐

    实验七-Java实验报告- Swing图形用户界面

    该程序通过Swing构建了一个简单的数学测验界面,其中包含了菜单栏、文本字段、标签以及按钮等组件。 - **程序结构**: - 使用了`JMenuBar`、`JMenu`和`JMenuItem`创建了菜单栏,允许用户选择不同的难度级别(幼儿...

    Java课程设计---javaswing带GUI界面学生管理系统(源码+sqlite数据库).rar

    【Java课程设计---javaswing带GUI界面学生管理系统】是一个基于Java Swing开发的桌面应用程序,它为用户提供了图形用户界面(GUI)来管理学生信息。这个项目的核心目标是实现一个简单易用的学生信息管理系统,利用...

    Java Swing 图形界面开发--文章的源码

    总的来说,这个压缩包中的源码涵盖了Java Swing GUI开发的多个方面,包括组件使用、布局管理、事件处理、自定义组件以及与用户交互的基本概念,是学习和实践Swing GUI编程的宝贵资源。通过阅读和理解这些代码,...

    Java-GUI编程之Swing组件.doc

    Swing是Java Foundation Classes(JFC)的一个组成部分,提供了丰富的图形用户界面组件,帮助开发者快速构建复杂的图形用户界面。 Border对象是Swing中的一种基本组件,用于设置组件的边框。Border对象可以是各种...

    Java Swing 界面美化包-含源码

    Java Swing 是Java标准库中的一个组件,用于创建图形用户界面(GUI)。Swing 提供了丰富的组件集合,如按钮、文本框、菜单等,用于构建桌面应用程序。然而,Swing 的默认界面风格(LookAndFeel)在视觉上可能相对...

    java界面编程-中级界面篇

    "Java界面编程-中级界面篇"涵盖了提升用户交互体验的核心技术,包括但不限于Swing库的使用、事件处理、布局管理以及自定义组件的创建。这份资料不仅提供了理论知识,还包含了丰富的代码示例和文档说明,帮助开发者...

    java 界面--QQ 代码

    1. **Swing组件**:Swing提供了许多组件,如JFrame(窗口)、JLabel(标签)、JButton(按钮)、JTextField(文本框)等,这些组件可以组合起来构建复杂的用户界面。在本项目中,可能使用了这些组件来创建登录界面,...

    Java学习资料-界面设计(Swing)-核心精讲

    首先,Swing 提供了丰富的组件库,包括按钮(JButton)、文本框(JTextField)、标签(JLabel)、面板(JPanel)、滚动窗格(JScrollPane)、菜单(JMenu)等,这些组件可以构建出各种复杂的用户界面。Swing组件基于...

    Java编程实现swing圆形按钮实例代码

    Java编程实现swing圆形按钮实例代码主要介绍了Java编程实现swing圆形按钮实例代码,涉及两个简单的Java实现按钮的代码,其中一个具有侦测点击事件的简单功能,具有一定借鉴价值,需要的朋友可以参考。 Swing是一个...

    java界面编程-特效篇

    Java界面编程是开发桌面应用程序的重要组成部分,特别是在需要与用户交互的场景中。在这个"java界面编程-特效篇"中,我们可以深入探讨如何在Java中创建引人入胜、具有视觉吸引力的用户界面,以及实现各种特效。源码...

    Java课程设计---swing带GUI界面学生宿舍管理系统(源码+数据库+实践报告) .rar

    Swing提供了丰富的组件,如按钮、文本框、列表视图等,使得开发者能够轻松地构建用户界面。在本项目中,Swing被用来创建各种界面元素,如登录窗口、宿舍信息展示、学生信息录入和查询等功能。 数据库是系统的核心...

    java Swing用户界面组件

    通过以上介绍,我们可以看出Java Swing为开发人员提供了强大的工具来创建复杂的用户界面。无论是简单的桌面应用还是功能丰富的软件,Swing都能满足需求,同时保持良好的性能和可移植性。在实际开发中,熟练掌握Swing...

    java-swing-.rar_swing系统

    总的来说,这个“java-swing-.rar_swing系统”项目是一个学习和实践Swing GUI编程的好例子,它涵盖了Swing组件的使用、布局管理、事件处理和MVC设计模式等多个方面,对于想要提升Java桌面应用开发技能的开发者来说,...

    java swing漂亮界面(超酷) javaswing教程

    在Java Swing中,你可以创建出既美观又高效的程序界面,而且Swing完全使用Java编写,具有平台无关性。 本教程“Java Swing漂亮界面(超酷) Java Swing教程”着重于如何利用Swing来设计吸引人的、用户友好的GUI。在...

    java swing漂亮界面 超酷 javaswing教程

    Swing提供了一系列组件,如按钮、文本框、菜单等,允许开发者构建功能丰富的、具有吸引力的用户界面。 在“Java Swing漂亮界面 超酷 JavaSwing教程”中,我们主要会探讨如何利用Swing来设计美观且用户友好的界面。...

    Java+Swing图形界面开发与案例详解实例代码

    在Java Swing中,基本的组件包括按钮(JButton)、文本框(JTextField)、标签(JLabel)、面板(JPanel)等。这些组件可以组合在一起,形成复杂的窗口应用。例如,一个简单的GUI应用可能包含一个主窗口(JFrame),...

    java swing界面设计

    - "Java图形用户界面设计(Swing常用组件).ppt"和"JavaSwing界面设计(所有控件及示例).ppt"两个文件中可能包含了各种Swing组件的使用示例和实际应用,建议仔细学习和实践。 9. **学习资源** - Java官方文档:提供...

    Java课程设计---Javaswing通讯录带GUI界面(利用Swing实现).rar

    1. **Swing组件**:在Java Swing中,我们可以使用各种组件来构建GUI,例如JFrame用于创建窗口,JLabel用于显示文本或图像,JButton用于创建按钮,JTextField和JTextArea用于输入文本,JComboBox用于创建下拉列表,...

    第十八章 图形界面开发--AWT,Swing,SWT.pdf

    ### 第十八章 图形界面...本章主要介绍了Java图形界面开发的基础知识和常用技术,包括AWT、Swing和SWT等。通过本章的学习,读者可以了解到图形界面开发的基本流程和技术要点,为进一步深入研究和实践打下坚实的基础。

Global site tag (gtag.js) - Google Analytics