Swing JToolbarButton按下

我使用JToolbarButtonbutton,当我点击它时,我想让它“按下”,就像JButton一样。我该怎么做? 请帮忙,谢谢。

正如Costis的回复中所提到的,您可能是在JToggleButton 。 也可能需要抑制边界的绘制,如本例中的第二个工具栏。

切换栏

 import java.awt.*; import java.awt.image.*; import javax.swing.*; class ToggleBar { public static JToggleButton getButton( Image selected, Image unselected, boolean decorated) { JToggleButton b = new JToggleButton(); b.setSelectedIcon(new ImageIcon(selected)); b.setIcon(new ImageIcon(unselected)); b.setBorderPainted(decorated); return b; } public static Image getCircleImage(Color c) { BufferedImage bi = new BufferedImage( 32,32,BufferedImage.TYPE_INT_ARGB); Graphics2D g = bi.createGraphics(); g.setColor(c); g.fillOval(0,0,32,32); g.dispose(); return bi; } public static void main(String[] args) { SwingUtilities.invokeLater( new Runnable() { public void run() { Image red = getCircleImage(Color.RED); Image green = getCircleImage(Color.GREEN); JPanel p = new JPanel(new GridLayout(0,1)); JToolBar tb1 = new JToolBar(); for (int ii=0; ii<5; ii++) { tb1.add( getButton(red, green, true) ); } p.add(tb1); JToolBar tb2 = new JToolBar(); for (int ii=0; ii<5; ii++) { tb2.add( getButton(red, green, false) ); } p.add(tb2); JOptionPane.showMessageDialog(null, p); } }); } } 

Apache Batik中有一个JToolbarButton。

在我看来,你正在寻找的是一个JToggleButton 。 您可以调整它以显示一个小图像,并且很小。

 jToggleButton1.setIcon(new javax.swing.ImageIcon("image.png")); jToggleButton1.setSelectedIcon(new javax.swing.ImageIcon("selected_image.png")); 

添加另一个图像与setSelectedIcon为了让你看按下button。