JButton CDE/Motif PreferredSize с ImageIcon с пустым текстом
Я тестировал свой Java-код с помощью CDE/Motif LookAndFeel.
Я смотрел производительность / поведение JButton, когда PreferredSize установлен.
ПРИМЕЧАНИЕ. Я просматривал этот пост. Подгоните размер ImageIcon к JButton, но я не хочу динамически изменять размер (JButton/ImageIcon), только хочу, чтобы "тот же" вид между LAF.
Мой код:
Сначала я создал изображение на лету, чтобы проверить porpouse.
BufferedImage bi = new BufferedImage(13, 13, BufferedImage.TYPE_INT_ARGB);
Graphics gr = bi.createGraphics();
gr.setColor(Color.RED);
gr.drawLine(6, 0, 6, 13);
gr.setColor(Color.GREEN);
gr.drawLine(0, 6, 13, 6);
gr.dispose();
gr.drawImage(bi, 0, 0, null);
Кнопка!
Font inFont = new Font("Monospaced", Font.PLAIN, 10);
//Creating the Button!
JButton jbt = new JButton(new ImageIcon(bi));
jbt.setPreferredSize(new Dimension(30, 21)); // I want to use this Dimension!!!
jbt.setSize(new Dimension(30, 21));
jbt.setFont(inFont);
Теперь панели...
JPanel jpHorz = new JPanel();
GroupLayout jpLAFLayout = new GroupLayout(jpHorz);
jpHorz.setLayout(jpLAFLayout);
//Code to obtain this appareance inserting THE BUTTON 'jbt'
jpLAFLayout.setHorizontalGroup(
jpLAFLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(jpLAFLayout.createSequentialGroup()
.addGap(26, 26, 26)
.addComponent(jbt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addContainerGap(26, Short.MAX_VALUE))
);
jpLAFLayout.setVerticalGroup(
jpLAFLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(jpLAFLayout.createSequentialGroup()
.addGap(6, 6, 6)
.addComponent(jbt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
.addContainerGap(12, Short.MAX_VALUE))
);
Больше кода...
JPanel jpVert = new JPanel();
jpVert.setBackground(new Color(208, 208, 208));
jpVert.setLayout(new BoxLayout(jpVert, BoxLayout.PAGE_AXIS));
jpVert.add(jpHorz);
frame.add(jpVert, BorderLayout.NORTH);
frame.setPreferredSize(new Dimension(480, 120));
Как видите, изображение не заполнено с помощью CDE / Motif LookAndFeel
С jbt.setMargin(new Insets(0, 0, 0, 0));
Я не получаю эффекты.
Есть ли способ изменить этот плохой вид КНОПКИ с Motif LAF?
Здесь сравнение изображений.