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)处绘制它。我确定这一定很简单,你们有什么想法吗?
答案 0 :(得分:3)
尝试
FontMetrics fm = g.getFontMetrics();
g.drawString("hI", 10, fm.getMaxAscent());
,如FontMetrics
中的图表所示。
附录:@RaviG也是对的。
答案 1 :(得分:2)
您尚未将画布添加到框架中。
在你的构造函数中,最后,
添加getContentPane().add(canvas);