Нет значков, добавленных в JRadioButton. Пользовательский интерфейс просто рисует иконки по мере необходимости, поэтому вы не можете использовать методы getIcon ... () для получения иконок и масштабирования. Таким образом, в качестве обходного пути вам необходимо сначала создать собственное изображение значков, прежде чем их масштабировать.
Вот кое-что, с чего можно начать. Класс Screen Image упрощает создание изображений компонента. Обратите внимание, что вам также понадобится создать изображения для значков «ролловер». Это можно сделать, установив метод ButtonModel.setRollover (true) для нормального и выбранного состояний переключателя.
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();
}
});
}
}