swing jbutton
场景:java swing 中JButton的运用
java swing 中JButton的使用
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.BOTTOM,AbstractButton.CENTR
setMnemonic(char c) 设置按钮的键盘操作方式是字符c(Alt+c)
setEnabled(boolean b) b决定按钮是否可以被单击