/**
* 练习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 文字在图片左边 标识使用从左到右和从右到左的语言的文本开始边 【LINUX公社 】
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,则该组件绘制其边界内的所有像素。否则该组件可能不绘制部分或所有像素,从而允许其底层像素透视出来。