2017-02-19 109 views
0

我用按钮的自定义图标创建了一个GUI程序。但是,我无法在Java中设置这些按钮的大小,所以它们仍然保持其原始大小,230x227。我试图让他们成为左右20×20,所以我用下面的代码:如何设置自定义按钮的大小?

classAlcBtn.setPreferredSize(new Dimension(20,20)); 
classAlcBtn.setIcon(new ImageIcon(getClass().getResource("Alchemist.png"))); 
classAlcBtn.setBorder(null); 
classAlcBtn.setBorderPainted(false); 
classAlcBtn.setContentAreaFilled(false); 
classAlcBtn.setPressedIcon(
    new ImageIcon(getClass().getResource("alchemistClicked.png"))); 
classAlcBtn.setCursor(new Cursor(Cursor.HAND_CURSOR)); 

有没有办法迫使这些图标的大小了,或者我有尺寸减小的实际图标文件?谢谢你的帮助。

+1

你可以没有图标正确的大小按钮? – rossum

+1

*“230x227。我试图让它们在20x20左右,所以我使用了下面的代码:”*这些图像是不同的纵横比。这个想法是为了适应新的长宽比而伸展,裁剪或填充它们吗? *“有没有办法强制这些图标缩小,..”*是,**但是.. ** *“..或者我是否必须缩小实际图标文件的大小?”* ..这将是最好的选择。有很好的图像编辑程序来调整图像大小。在Java中复制是可能的,但不是微不足道的。此外,它意味着分发更大(以字节为单位)的图像文件并在应用程序上占用更多的CPU时间。启动。 –

+0

@AndrewThompson是的,我只是决定调整图像文件本身。感谢您的信息。 –

回答

1

假设你可以缩小按钮的大小,没有图标。因此,使用下面的方法来规模缩小的图像,不改变原始文件的大小:

ImageIcon icon = new ImageIcon("whatever.jpg"); 
Image img = icon.getImage() ; 
Image newImg = img.getScaledInstance(NEW_WIDTH, NEW_HEIGHT, java.awt.Image.SCALE_SMOOTH) ; 
icon = new ImageIcon(newImg); 

... 

classAlcBtn.setIcon(icon); 

如果按钮调整本身没有工作,那么你可以尝试使用setMaximumSize()代替setPreferredSize()方法如下:

classAlcBtn.setMaximumSize(new Dimension(100,100)); 

有关更多信息,请参阅this。关于尺寸。希望这有助于:)

+0

我只是决定调整图像文件本身来减少启动。虽然谢谢! –

相关问题