[英]Having Paint loop trouble in java
無論出於什么原因,我的循環似乎都無法正確打印顏色。 在填充和繪制之前已設置好顏色,但根本沒有顯示Color.white。 它顯示為白色。 為了更好地說明我想要的照片看起來不舒服,請附上照片。 感謝您的幫助!
這是我的ExampleGUI.java源代碼
import javax.swing.*;
public class ExampleGUI {
public static void main(String args []) {
JFrame frame = new JFrame("Example Graphics");
ExamplePanel panel = new ExamplePanel();
frame.getContentPane().add(panel);
frame.setDefaultCloseOperation(3);
frame.pack();
frame.setVisible(true);
}
}
這是我的ExamplePanel.java源代碼
import java.awt.*;
import javax.swing.*;
public class ExamplePanel extends JPanel{
public ExamplePanel() {
setPreferredSize(new Dimension (600, 600));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
int x = 0;
int x2 = 5;
int y = 500;
int y2 = 505;
int w = 100;
int w2 = 90;
int h = 100;
int h2 = 90;
int i, j;
for(j = 1; j < 7; j++) {
x = 0;
x2 = x + 5;
for(i = 1; i < 7; i++) {
if(i % 2 == 0) {
g.setColor(Color.white);
g.fillRect(x, y, w, h);
g.setColor(Color.black);
g.drawRect(x, y, w, h);
g.setColor(Color.green);
g.fillOval(x2, y2, w2, h2);
g.setColor(Color.black);
g.drawOval(x2, y2, w2, h2);
}else if (i % 2 == 1 && j % 2 == 1)
g.setColor(Color.yellow);
g.fillRect(x, y, w, h);
g.setColor(Color.black);
g.drawRect(x, y, w, h);
g.setColor(Color.green);
g.fillOval(x2, y2, w2, h2);
g.setColor(Color.black);
g.drawOval(x2, y2, w2, h2);
x = x + w;
x2 = x2 + w2 + 10;
}
x = x + w;
y = y - h;
y2 = (y2 - h2) - 10;
}
}
}
讓我們從刪除重復開始,例如,而不是...
if (i % 2 == 0) {
g.setColor(Color.white);
g.fillRect(x, y, w, h);
g.setColor(Color.black);
g.drawRect(x, y, w, h);
g.setColor(Color.green);
g.fillOval(x2, y2, w2, h2);
g.setColor(Color.black);
g.drawOval(x2, y2, w2, h2);
} else if (i % 2 == 1 && j % 2 == 1) {
g.setColor(Color.yellow);
}
g.fillRect(x, y, w, h);
g.setColor(Color.black);
g.drawRect(x, y, w, h);
g.setColor(Color.green);
g.fillOval(x2, y2, w2, h2);
g.setColor(Color.black);
g.drawOval(x2, y2, w2, h2);
你真的只需要...
if (i % 2 == 0) {
g.setColor(Color.white);
} else if (i % 2 == 1 && j % 2 == 1) {
g.setColor(Color.yellow);
}
g.fillRect(x, y, w, h);
g.setColor(Color.black);
g.drawRect(x, y, w, h);
g.setColor(Color.green);
g.fillOval(x2, y2, w2, h2);
g.setColor(Color.black);
g.drawOval(x2, y2, w2, h2);
您在第一個if
語句中所做的一切都被if-else
塊之外的其他繪畫代碼抹去了...
接下來,您的邏輯略有偏離,而不是...
if (i % 2 == 0) {
g.setColor(Color.white);
} else if (i % 2 == 1 && j % 2 == 1) {
g.setColor(Color.yellow);
}
您可以使用類似...
if ((i + j) % 2 == 0) {
g.setColor(Color.white);
} else {
g.setColor(Color.yellow);
}
這會讓您喜歡的棋盤格外觀。
走近一點 您將需要另一個for-loop
來生成內部圓,但是盡量不要直接修改您當前依賴的值;)
您還可以使用if
塊來定義需要使用的背景色和前景色,將它們分配給一些變量,並將其應用到繪畫部分中,這將為您提供更大的靈活性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.