drawImage不显示整个图像?
问题描述:
我想提请后者又被添加到一个JFrame一个JPanel的图像,在这里看到:drawImage不显示整个图像?
JFrame screen;
public void welcome(){
screen = new JFrame("Welcome");
screen.setVisible(true);
screen.pack();
screen.setBackground(Color.darkGray);
screen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// in the original code there is series of methods here that eventually calls the drawBoard() method
public void drawBoard(){
try {
final BufferedImage gboard = ImageIO.read(new File("cutsomGameBoard.jpg"));
final BufferedImage featPanel = ImageIO.read(new File("extraPanel.png"));
board = new JPanel(){
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(gboard, 0, 0, this);
}
};
extra = new JPanel(){
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(featPanel, 0, 0, this);
}
};
board.setSize(480, 480);
extra.setSize(480, 320);
}
catch (IOException e) {
e.printStackTrace();
}
}
gameScreen.add(toolbar, BorderLayout.PAGE_START);
gameScreen.add(board, BorderLayout.EAST);
gameScreen.add(extra, BorderLayout.WEST);
gameScreen.setVisible(true);
screen.add(gameScreen);
}
我的问题是,当运行代码时,只缓冲图像的一个小角落可见我不确定这是否是框架布局,面板大小或drawImage方法参数,想法的问题?
P.S.输出:JAVA窗口的截图
答
所以默认大小基本上是你没有覆盖您的自定义组件的getPreferredSize()
方法(10,10),这是使用具有的FlowLayout面板的尺寸没有添加组件。
不要使用JPanel来显示图像。或者如果您确实想使用JPanel,那么您需要实现getPreferredSize()
方法来返回图像的大小。
最简单的解决方案是只使用JLabel
和ImageIcon
。
请参阅How to Use Icons的Swing教程以了解更多信息和工作示例。