java swing 中JButton的使用

 

 

/**
* 练习button的使用
*/
package components;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
* @author lzycsd
* 测试按钮使用
*/
public class MyButtonDemo extends JPanel
        implements ActionListener {
protected JButton bl,bc,br;

public MyButtonDemo(){
  
   ImageIcon leftButtonIcon = createImageIcon("images/right.gif");
   ImageIcon centerButtonIcon = createImageIcon("images/middle.gif");
   ImageIcon rightButtonIcon = createImageIcon("images/left.gif");
   //创建及设计左边的按钮
   bl = new JButton("使中间按钮无效",leftButtonIcon);
   bl.setVerticalTextPosition(AbstractButton.CENTER); //设置文本相对于图标的垂直位置。
   bl.setHorizontalTextPosition(AbstractButton.LEADING); //设置文本相对于图标的水平位置。leading 文字在图片左边 标识使用从左到右和从右到左的语言的文本开始边 
   bl.setActionCommand("disable"); //设置此按钮的动作命令。 后面会取到此值
   bl.setMnemonic(KeyEvent.VK_L); //按钮快捷键 并且应该使用 java.awt.event.KeyEvent 中定义的 VK_XXX 键代码之一指定。助记符是不区分大小写的
  
   //创建及设计中间的按钮
   bc = new JButton("这是中间的按钮",centerButtonIcon);
   bc.setVerticalTextPosition(AbstractButton.BOTTOM);
   bc.setHorizontalTextPosition(AbstractButton.CENTER);
   bc.setMnemonic(KeyEvent.VK_C); //快捷键是c
  
   //创建及设计右边的按钮
   br = new JButton("使中间按钮有效",rightButtonIcon);
   /*br.setVerticalTextPosition(AbstractButton.CENTER);
   br.setHorizontalTextPosition(AbstractButton.TRAILING);默认布局方式*/
   br.setMnemonic(KeyEvent.VK_R); //快捷键是r
   br.setEnabled(false);
  
   //监听bl和br按钮
   bl.addActionListener(this);
   br.addActionListener(this);
  
   bl.setToolTipText("使中间按钮无效!");
   bc.setToolTipText("这是中间按钮的提示文本!");
   br.setToolTipText("使中间按钮有效!");
  
   //Add Components to this container, using the default FlowLayout.
        add(bl);
        add(bc);
        add(br);
}

public void actionPerformed(ActionEvent e){
   if("disable".equals(e.getActionCommand())){
    bl.setEnabled(false);
    bc.setEnabled(false);
    br.setEnabled(true);
   }else{
    bl.setEnabled(true);
    bc.setEnabled(true);
    br.setEnabled(false);
   }
}

    /** Returns an ImageIcon, or null if the path was invalid. */
    protected static ImageIcon createImageIcon(String path) {
    java.net.URL imgURL = MyButtonDemo.class.getResource(path);
    if(imgURL!=null){
       System.out.println(imgURL+"____"+path);
       return new ImageIcon(imgURL);
    }else{
       System.err.println("couldn't find file:"+path);
       return null;
    }
    }
/**
     * Create the GUI and show it. For thread safety, 
     * this method should be invoked from the 
     * event-dispatching thread.
     */
public static void createAndShowGUI(){
   //Create and set up the window.
   JFrame frame = new JFrame("测试按钮的例子");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
   //Create and set up the content pane.
   MyButtonDemo newContentPane = new MyButtonDemo();
   newContentPane.setOpaque(true);
/*如果为 true,则该组件绘制其边界内的所有像素。否则该组件可能不绘制部分或所有像素,从而允许其底层像素透视出来。 
   对于 JComponent 而言,此属性的默认值是 false。但是对于大多数标准的 JComponent 子类(如 JButton 和 JTree),此属性的默认值与外观有关。 


   参数:
   isOpaque - 如果此组件应该是不透明的,则为 true*/
   frame.setContentPane(newContentPane);
   //display the window
   frame.pack();
   frame.setVisible(true);
   
}
/**
* @param args
*/
public static void main(String[] args) {
   // TODO Auto-generated method stub
   javax.swing.SwingUtilities.invokeLater(new Runnable(){
    public void run(){
     createAndShowGUI();
    }
   });
   /*在java的主线程(Main   Thread)中是使用事务的方式来处理事件的,主线程中有一个事件队列,当你所要做的动作将被放到主线程中处理而又不需要马上处理(或不想中断目前正在执行的事务),则可以使用InvokeLater方法将该事务放到事件队列的最后。让主线程自行执行。   
    使用InvokeLater不知道在什么时候会执行该事务,但好处是不会和其它事务起冲突。Swing中的重绘就是用InvokeLater来实现的。*/
}

}

 

 

常用方法

熟悉9、按钮(JButton
JButton()
创建按钮
JButton(String s) s
是按钮的名字
JButton(Icon icon) icon
是按钮上的图标
JButton(String s,Icon icon)
getText()
获取按钮名字
getIcon()
获取按钮图标
setIcon(Icon icon)
设置按钮图标
setHorizontalTextposition(int a) a
确定按钮上图标的位置,取值:
AbstractButton_CENTR,AbstractButton_LEFT,AbstractButton_RIGHT
setVerticalTextposition(int a) a
确定按钮上名字相对图标的位置,取值:
AbstractButton.TOP
AbstractButton.BOTTOMAbstractButton.CENTR
setMnemonic(char c)
设置按钮的键盘操作方式是字符cAlt+c

setEnabled(boolean b) b
决定按钮是否可以被单击

 

你可能感兴趣的:(java)