當我將一個圖標添加到JMenuItem
時,它會放大到圖標的大小。看到這裏的區別:Force JMenuItem size
我可以以某種方式迫使它回落到原來的規模?如果沒有,是否有JMenuItem
的默認圖標大小(也就是說,當它完全適合Test1,2,3的圖標插槽時,圖標的大小是多少)?要解決這個
當我將一個圖標添加到JMenuItem
時,它會放大到圖標的大小。看到這裏的區別:Force JMenuItem size
我可以以某種方式迫使它回落到原來的規模?如果沒有,是否有JMenuItem
的默認圖標大小(也就是說,當它完全適合Test1,2,3的圖標插槽時,圖標的大小是多少)?要解決這個
的方法之一,就是要重新調整圖標本身:
ImageIcon i = new ImageIcon((getClass().getResource("new.png")));
Image image = i.getImage(); // transform it
Image newimg = image.getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH); // scale it the smooth way
i = new ImageIcon(newimg); // transform it back
然後,設置這個新的調整圖標到您的JMenuItem
:
*事實上,你可以只部隊的規模JMenuItem
通過聲明:
.setPreferredSize(new Dimension(..,..));
但問題是,圖標不會調整,它看起來像下面這樣:
下面是一個簡單的演示中,我寫道:
public class SwingMenuDemo {
private JFrame mainFrame;
public SwingMenuDemo() { prepareGUI(); }
public static void main(String[] args) {
SwingMenuDemo swingMenuDemo = new SwingMenuDemo();
swingMenuDemo.showMenuDemo();
}
private void prepareGUI() {
mainFrame = new JFrame("Java SWING Examples");
mainFrame.setSize(400, 400);
mainFrame.setVisible(true);
}
private void showMenuDemo() {
//create a menu bar
final JMenuBar menuBar = new JMenuBar();
//create menus
JMenu fileMenu = new JMenu("File");
//create menu items
JMenuItem test1 = new JMenuItem("test1");
JMenuItem test2 = new JMenuItem("test2");
JMenuItem test3 = new JMenuItem("test3");
JMenuItem test4 = new JMenuItem("test4");
ImageIcon i = new ImageIcon((getClass().getResource("new.png")));
Image image = i.getImage(); // transform it
Image newimg = image.getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH); // scale it the smooth way
i = new ImageIcon(newimg); // transform it back
test4.setIcon(i);
fileMenu.add(test1);
fileMenu.add(test2);
fileMenu.add(test3);
fileMenu.add(test4);
menuBar.add(fileMenu);
//add menubar to the frame
mainFrame.setJMenuBar(menuBar);
mainFrame.setVisible(true);
}
}
原來的圖標的大小:
上JMenuItem
的縮放圖標:
有缺省圖標大小JMenuItem的
我想你可以看看的用於JCheckBoxMenuItem
和JRadioButtonMenuItem
看到這些圖標是什麼尺寸的圖標的大小。
可以使用UIManager的這個:
Icon icon = UIManager.getIcon("RadioButtonMenuItem.checkIcon");
Icon icon = UIManager.getIcon("CheckBoxMenuItem.checkIcon");