나는 확장자가 BufferedImage
인 확장 클래스를 생성자에게 제공되는 문자열로 표시해야합니다. 이 작업을 수행하려는 이유는 graphics2D
의 앤티 앨리어싱 기능을 허용하는 것입니다. 자세한 내용은 내 previous question을 참조하십시오. 더 좋은 제안이 있으면 꼭 제안하십시오. 이제는 BufferedImage
클래스가 작동하지만 실제 글꼴을 설정하기 전에 입력 문자열을 표시하기 위해 필요한 너비와 높이를 결정하는 방법을 알 수 없습니다. 또한 초기 크기가 설정되면 BufferedImage
부모 크기를 조정하는 방법을 찾을 수 없습니다. 여기 내 코드는 다음과 같습니다.알 수없는 크기의 BufferedImage 만들기
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
public class Test extends JFrame{
public Test(){
this.add(new JLabel(new ImageIcon(new IconImage("Test", new Font("Sans-Serif", Font.PLAIN, 16)))));
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.pack();
}
class IconImage extends BufferedImage{
public IconImage(String text, Font font){
super(..., ..., BufferedImage.TYPE_INT_ARGB);//*****Unknown dimensions*****
Graphics2D g2d = (Graphics2D) this.getGraphics();
g2d.setFont(font);
g2d.setColor(Color.BLACK);
int stringHeight = (int) g2d.getFontMetrics().getStringBounds(text, g2d).getHeight();
g2d.drawString(text, 0 , stringHeight);
g2d.dispose();
}
}
public static void main(String[] args){
new Test();
}
}
어떤 조언이 있습니까? 감사.
왜 이미지를 먼저 만든 다음 버튼을 만들지 묻는지도 모르겠습니까? 당신이 다른 방향으로 그것을 할 수 있을까요? (만약 그렇다면 : 당신은 버튼을 측정 할 수 있고 그 이미지를 생성 한 후) btw : 컴포넌트보다 큰 그래픽을 디스플레이하는 법 - 작동하지만 클리핑됩니다 ... –
실제 구현은 버튼을 생성하기 때문에'setIcon '및'setRolloverIcon'. 나는'setText'가 호출 된 버튼에 대해서 앤티 앨리어싱을 수행하는 방법을 이해할 수 없었습니다. – Hungry