2
我正在使用java awt渲染一個簡單的矩形。我也有一個矩形作爲窗口的背景。事情是,即使背景矩形設置爲窗口的寬度和高度,它仍然不適合整個事情。我試圖谷歌這一點,但發現與我的需求無關的結果。這是什麼造成的?如何在awt中填充整個窗口
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.image.BufferStrategy;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Game implements Runnable{
final int WIDTH = 640;
final int HEIGHT = 480;
JFrame frame;
Canvas canvas;
BufferStrategy bufferStrategy;
boolean running = false;
public Game(){
frame = new JFrame("Prototyping");
JPanel panel = (JPanel) frame.getContentPane();
panel.setPreferredSize(new Dimension(WIDTH, HEIGHT));
panel.setLayout(null);
canvas = new Canvas();
canvas.setBounds(0, 0, WIDTH, HEIGHT);
canvas.setIgnoreRepaint(true);
panel.add(canvas);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setResizable(false);
frame.setVisible(true);
canvas.createBufferStrategy(2);
bufferStrategy = canvas.getBufferStrategy();
canvas.requestFocus();
}
public void run(){
running = true;
while(running)
render();
}
private void render() {
Graphics2D g = (Graphics2D) bufferStrategy.getDrawGraphics();
g.clearRect(0, 0, WIDTH, HEIGHT);
render(g);
g.dispose();
bufferStrategy.show();
}
protected void update(){
}
protected void render(Graphics2D g){
g.setColor(Color.GRAY);
g.fillRect(0, 0, WIDTH, HEIGHT);
g.setColor(Color.BLUE);
g.fillRect(100, 0, 200, 200);
}
public static void main(String [] args){
Game game = new Game();
new Thread(game).start();
}
}
*「..即使將背景矩形設置爲窗口的寬度和高度,它仍然不適合整個事情。」*等等..什麼?灰色矩形填充UI(此處)。藍色矩形故意繪製得比UI小。另外:Java GUI必須適用於不同的OS,屏幕大小,屏幕分辨率等。因此,它們不利於像素的完美佈局。請使用佈局管理器或[它們的組合](http://stackoverflow.com/a/5630271/418556)以及[white space]的佈局填充和邊框(http://stackoverflow.com/a/17874718/ 418556)。 –
@AndrewThompson欣賞鏈接。雖然我看到的問題是側面的空白:http://i.imgur.com/fcn7Ggx.gif。我認爲這與空佈局有關? –
哦,我的壞..我想我可能已經添加了佈局,然後再看結果。改變'panel.setLayout(null);'到'panel.setLayout(new GridLayout());'看看它是否變好.. @ –