import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
@SuppressWarnings("serial")
public class Main extends JFrame {
final int FRAME_HEIGHT = 400;
final int FRAME_WIDTH = 400;
public static void main(String args[]) {
new Main();
}
public Main() {
super("Game");
GameCanvas canvas = new GameCanvas();
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenuItem startMenuItem = new JMenuItem("Pause");
menuBar.add(fileMenu);
fileMenu.add(startMenuItem);
getContentPane().add(canvas);
super.setVisible(true);
super.setSize(FRAME_WIDTH, FRAME_WIDTH);
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
super.setJMenuBar(menuBar);
}
}
import java.awt.Canvas;
import java.awt.Graphics;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class GameCanvas extends JPanel {
public void paint(Graphics g) {
g.drawString("hI", 0, 0);
}
}
이 코드는 문자열을 JMenuBar 뒤에 표시합니다. 문자열을 보려면 문자열을 (0,10)에 그려야합니다. 이게 뭔가 간단한 것이 틀림 없어, 너희들은 어떤 생각을 가지고 있니? FontMetrics
에 그림에 의해 제안JPanel이 JMenuBar 뒤에 표시됩니다.
getContentPane().add(canvas);
를 추가 끝에 당신의 생성자에서,. 사용자 정의 페인팅은 paint() 메소드가 아닌 paintComponent() 메소드를 대체하여 수행됩니다. super.paintComponent (...)를 호출하여 배경이 다시 그려지는지 확인해야합니다. – camickr