それで、私はしばらく Minecraft を改造しており、ボタンがどのように生成されるかを見てきました。ボタンの非常に広い画像を取り、左側の部分と右側の部分を取り、2 つを元に戻して小さな画像を形成します。
申し訳ありませんが、これを言葉でうまく説明できないので、下手な Paint.Net スキルをお見せしましょう。
ただし、次のようになるため、機能させることができません。
ここに私のコードの一部があります:
public class ComponentToolbarButton extends JComponent implements MouseListener {
private static final int HEIGHT = 40;
// ... other methods here
private BufferedImage getImageBasedOnWidth(Graphics g) {
BufferedImage finalImage = null;
BufferedImage rawImage = null;
// Try/catch block to initialize rawImage
// Setting font and things here
int compWidth = determineComponentWidth(g); // Returns the (should-be) width of the component
if (compWidth != getWidth()) {
setPreferredSize(new Dimension(compWidth, HEIGHT)); // Just making sure :)
}
finalImage = new BufferedImage(compWidth, HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics finalImageGraphics = finalImage.getGraphics();
// Draw left side:
finalImageGraphics.drawImage(rawImage, 0, 0, 0, compWidth / 2, 0, 0, compWidth, HEIGHT, null);
// Draw right side:
finalImageGraphics.drawImage(rawImage, compWidth / 2, 0, compWidth, HEIGHT, rawImage.getWidth() / 2 - compWidth,
0, rawImage.getWidth(), rawImage.getHeight(), null);
return finalImage;
}
}
前もって感謝します!(ところで、できる限りコードを短くしようとしました)