Java SE 7 가장 쉬운 방법은 디버깅을 위해 몇 가지 지점을 플롯하기위한 인스턴스를 얻는 것입니까? 데스크탑 환경.Graphics2D 인스턴스를 만드는 방법은 무엇입니까?
답변
당신이 사용할 수있는 BufferedImage
:
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics2D = image.createGraphics();
가장 쉽고 안전한 방법은 Graphics
참조를 paintComponent
에 캐스팅하고 필요에 따라 캐스팅하는 것입니다. 그러면 Object
이 올바르게 초기화됩니다. 이 참조는 필요에 따라 다른 사용자 정의 페인팅 메소드에 전달 될 수 있습니다.
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
...
}
아래 @ greedybuddha의 유사한 조금 더 완벽한 솔루션을 시도했지만 내 프로그램을 만든 후 즉시 종료됩니다. – necromancer
@randomstring : 그러면 뭔가 잘못하고있는 것입니다. 뭐? - 코드를 보여주지 않아서 전혀 모릅니다. 1 + –
감사합니다. JFrame에 추가해야했습니다. 나는 내 질문에 얼마나 더 초보자인지 명확히해야한다 :) – necromancer
그냥 JPanel을 만들고 페인트해야합니다.
public class MyPanel extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
.... // my painting
}
}
내 프로그램은 jpanel을 만든 후 종료됩니다. – necromancer
@randomstring : JFrame에 넣고 JFrame을 표시하고 있습니까? 스윙 튜토리얼을 전혀 읽지 않았습니까? –
nope, 초보자 용. 하지만 JFrame에 추가하기 위해 알아 냈습니다. 감사! – necromancer
나는 대답을 좋아합니다 - 어떻게 이미지를 표시 할 수 있습니까? – necromancer
JLabel에 의해 표시되는 ImageIcon입니다. 1 + –
답변을 받아 들일 수있는 어려운 선택, 나는 매우 간단하고 울트라 - 이식성이 하나를 선택했습니다. 그것은 서버 측뿐만 아니라 데스크탑에서도 작동합니다. 이 접근법의 유일한 단점은 디버깅에 사용할 수있는 마우스 이벤트를 잡을 수 없기 때문에 데스크톱에 이상적이지 않다는 것입니다. 하지만 그건 내가 요구 한 것이 아닙니다. 훌륭한 답변에 감사드립니다! – necromancer