我有一个500 x 500像素的图像,我正在尝试绘制到JFrame中的JPanel。这是我到目前为止的代码:
public class Game extends JFrame {
// Other code...
setTitle("Game");
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(500, 500));
add(panel);
setSize(500, 500);
setIgnoreRepaint(true);
// Handle a close event gracefully.
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
addKeyListener(new MainMenuState(this));
setResizable(false);
pack();
setVisible(true);
我可以画到JPanel好了,但看起来JPanel的左上角是在JFrame的0,0处绘制的,它位于标题栏的下方。我已经尝试在JFrame上设置布局管理器,但这似乎不起作用。我可以手动抵消JPanel,但我不认为我必须这样做(我认为pack()
应该开车了。)
答案 0 :(得分:4)
答案 1 :(得分:4)
为什么要在JFrame
内创建JFrame
?如果您extends JFrame
只是这样做:
public class Game extends JFrame {
public Game() {
this.setTitle("Application");
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(500, 500));
this.add(panel);
this.setIgnoreRepaint(true);
// Handle a close event gracefully.
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// example, use your own layout manager - see text below
this.setLayout(new FlowLayout());
this.pack();
this.setResizable(false);
this.setVisible(true);
}
}
现在回答你的问题。如果您想要一些保证金,则必须使用layout manager。
答案 2 :(得分:0)
我刚刚解决了同样的问题。
我的main
读取:
public static void main(String[] args) {
JFrame main = new JFrame("Game");
main.setLayout(new BorderLayout);
JPanel game = new Game();
game.setPreferredSize(new Dimension(500, 500));
main.add(game, BorderLayout.CENTER);
main.pack();
main.setVisible(true);
}