[英]java.awt.Graphics, how to define position?
所以,我注意到當重寫JFrame或JPanel的paint方法時,圖形上下文提供的位置是相對於組件的。
例如:
public class Example extends JFrame {
JPanel panel1 = new JPanel() {
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.LIGHT_GRAY);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.blue);
g.fillRect(0, 0, 25, 25);
}
};
JPanel panel2 = new JPanel() {
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.GRAY);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.blue);
g.fillRect(0, 0, 25, 25);
}
};
public Example() {
setTitle("Test");
setSize(800, 600);
setLocationRelativeTo(null);
setDefaultCloseOperation(3);
setLayout(null);
panel1.setBounds(0, 0, 400, 600);
add(panel1);
panel2.setBounds(400, 0, 400, 600);
add(panel2);
setVisible(true);
}
public static void main(String args[]) throws Exception {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
new Example();
}
});
}
}
結果:
繪制的矩形相對於組件位於x25,y25,而不是屏幕或頂級窗口。
我本來想要自己實現這個,但是在圖形類中沒有看到任何讓你這樣做的方法。
我想你正在尋找Method Graphics.translate()
。 您可以指定所有點都轉換為的x和y值。 當然,您應該在繪制后將其反轉,以便超類不受更改的影響。
為了避免超類所產生的問題,您還可以使用Graphics
對象的create()
方法,在新對象上繪制,以及調用dispose
(感謝HovercraftFullOfEels指出這一點) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.