がある場合は、Image
呼び出しgetScaledInstance
てサイズ変更された画像を取得できます。
がある場合はImageIcon
、それを呼び出しgetImage()
て を取得し、Image
上記の解決策を使用できます。
getScaledInstance
は を返します。Image
これは にラップして、またはImageIcon
に設定できます。JButton
JLabel
したがって、可能な限り最高の解像度で画像を作成し、適切な解像度に縮小します。
これは小さなスニペットです(あなたが始めた @mKorbel ソリューションから着想を得ています):
import java.awt.BorderLayout;
import java.awt.Image;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
public class ResizeIconInButton extends JFrame {
private static final long serialVersionUID = 1L;
private static final String IMAGE_PATH = "http://duke.kenai.com/misc/Bullfight.jpg";
private JButton myButton = new JButton();
public ResizeIconInButton() throws MalformedURLException {
myButton.setIcon(new ImageIcon(new ImageIcon(new URL(IMAGE_PATH)).getImage().getScaledInstance(600, 400, Image.SCALE_SMOOTH)));
add(myButton, BorderLayout.CENTER);
setTitle("Resize Icon In Button");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
ResizeIconInButton main = new ResizeIconInButton();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
});
}
}
小さいメモ: JFrame を拡張することはお勧めしませんが、元のコードにできるだけ近づけるようにしました。