Aucune icône n'a été ajoutée à un JRadioButton. L'interface utilisateur ne fait que peindre les icônes au besoin, donc vous ne pouvez pas utiliser les méthodes getIcon ...() pour obtenir les icônes et l'échelle ensuite. Donc, comme un travail autour de vous devez d'abord créer votre propre image des icônes avant de les mettre à l'échelle.
Voici quelque chose pour vous aider à démarrer. La classe Screen Image facilite la création d'images d'un composant. Notez que vous devrez également créer des images pour les icônes "rollover". Cela peut être fait en définissant la méthode ButtonModel.setRollover (true) pour les états normal et sélectionné du bouton radio.
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.border.*;
public class RadioButtonScale extends JFrame
{
private static void createAndShowGUI()
{
JPanel north = new JPanel(new FlowLayout(0, 0, FlowLayout.LEFT));
JRadioButton button = new JRadioButton("Radio Button");
north.add(button);
JPanel south = new JPanel();
JLabel west = new JLabel();
west.setBorder(new LineBorder(Color.GREEN));
south.add(west, BorderLayout.WEST);
JLabel east = new JLabel();
east.setBorder(new LineBorder(Color.GREEN));
south.add(east, BorderLayout.EAST);
// Create images of radio button icon
Icon icon = UIManager.getIcon("RadioButton.icon");
Dimension preferred = button.getPreferredSize();
Insets insets = button.getInsets();
int height = preferred.height - insets.top - insets.bottom;
// Rectangle r = new Rectangle(insets.left, insets.top, height, height);
Rectangle r = new Rectangle(insets.left, insets.top, icon.getIconWidth(), height);
west.setIcon(new ImageIcon(ScreenImage.createImage(button, r)));
button.setSelected(true);
east.setIcon(new ImageIcon(ScreenImage.createImage(button, r)));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(north, BorderLayout.NORTH);
frame.add(south, BorderLayout.SOUTH);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args)
{
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Il est étonnant qu'à la fin SWING ne donne pas une réponse à ce problème facile. Tu as ma solidarité. –