Swing JToolbarPremere il tasto

Io uso il pulsante JToolbarButton, voglio renderlo “premuto” quando clicco su di esso, proprio come funziona JButton. Come posso fare questo? Per favore aiuto! Grazie.

Come accennato nella risposta di Costis, probabilmente stai dopo un JToggleButton . Potrebbe anche essere necessario sopprimere il disegno del bordo, come nella seconda barra degli strumenti in questo esempio.

Attiva / disattiva barra

 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); } }); } } 

C’è un JToolbarButton in Apache Batik .

Mi sembra però che quello che stai cercando sia un JToggleButton . Puoi regolarlo per visualizzare un’immagine piccola e per essere piccolo.

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

Aggiungi un’altra immagine con setSelectedIcon per far sembrare premuto il tuo pulsante.