내가 그림그리기 캔버스 JFrame의
public class Game extends Canvas{
//FIELDS
public int WIDTH = 1024;
public int HEIGHT = WIDTH/16 * 9;
//METHODS
public void start(){
Dimension size = new Dimension (WIDTH, HEIGHT);
setPreferredSize(size);
paint(null);
}
public void paint(Graphics g){
g.setColor(Color.GREEN);
g.fillRect(0, 0, WIDTH, HEIGHT);
g.setColor(Color.BLACK);
g.fillOval(100, 100, 30, 30);
}
}
을 설정하고이 의미가 있습니다
public class MainW {
public static void main(String[] args) {
Game ga = new Game();
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.add(ga);
frame.setVisible(true);
ga.start();
}
}
창에서 한이 클래스에서, 캔버스와 간단한 모양을 그릴려고 만에 JFrame이 캔버스에 적용되지 않습니다. 개체를 보려면 창 크기를 수동으로 조정해야합니다. JFrame이 자동으로 Canvas를 포함하도록 어떻게 포장 할 수 있습니까?
편집 : 정말 이상합니다. frame.pack()이 실제로 필수적이지만, 충분하지 않습니다. 내가 한 일은 그런 식으로, 시작 방법을 변경하고 생성자로 돌려이었다
public class Game extends Canvas{
//FIELDS
public int WIDTH = 1024;
public int HEIGHT = WIDTH/16 * 9;
//METHODS
public void Game(){
Dimension size = new Dimension (WIDTH, HEIGHT);
setPreferredSize(size);
}
다음, 다른 클래스에서, 이클립스 직접 (EG ga.Game를) 생성자를 호출에 대해 불평, 그래서 나는 다음 그것의 팁 및 변경 :
이 방법은 내가 마음에 있지만 내가 정말 생성자를 호출 할 수 없습니다 모르겠어요 달성이 방법.
frame.pack
크기 문제를 해결하기위한 : 캔버스에 그림 후
의 읽기를 할 수 있습니다 ('진정한는, setVisible (GA) 추가'사이에서''와)'. – johnchen902
AWT와 Swing 구성 요소를 불필요하게 혼합하지 마십시오. YOU는 JPanel과'paintCompoment (...) '오버라이드 메소드에 그려야합니다. –