![](/img/trans.png)
[英]Resizing images and JPanel on JFrame when JFrame get resized
[英]canvas not resizing when jframe is resized
當我調整窗口大小時,它會正確調整大小,但我用來保存圖像的畫布不會隨之調整大小。
繼承人的代碼:
image = new BufferedImage(gc.width,gc.height,BufferedImage.TYPE_INT_RGB);
canvas = new Canvas();
Dimension s = new Dimension((int)(gc.width*gc.scale),(int)(gc.height*gc.scale));
canvas.setPreferredSize(s);
canvas.setMaximumSize(s);
canvas.setMinimumSize(s);
frame = new JFrame(gc.title);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(canvas,BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.setVisible(true);
canvas.createBufferStrategy(2);
bs = canvas.getBufferStrategy();
g = bs.getDrawGraphics();
}
public void update() {
Dimension s = frame.getSize();
canvas.setPreferredSize(s);
canvas.setMaximumSize(s);
canvas.setMinimumSize(s);
g.drawImage(image,0, 0, canvas.getWidth(), canvas.getHeight(),null);
bs.show();
}
幫助表示贊賞。
你如何調用更新?
您應該實現一個 ComponentListener(或 ComponentAdapter)並將其添加到 JFrame,在 componentResized 方法中,您調用更新。 就像是:
this.addComponentListener(new ComponentAdapter(){
componentResized(ComponentEvent e){
//UPDATE YOUR CANVAS HERE
}
});
另一種方法是在您的 JFrame 中覆蓋 update(Graphic):
public class MyWindow extends JFrame{
@Override
public void update(Graphics g){
super.update(g);
//UPDATE YOUR CANVAS HERE
}
}
我建議切換到 JavaFX。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.