Только что начал возиться с Swing для GUI проекта класса в Java. Однако я пытаюсь нарисовать игровой доску, а не обычный. Я пытаюсь сделать еще один, как parchessi board, поэтому каждая плитка должна иметь определенное местоположение, а не сетку.Проблема с drawRect/fillRect из Swing Library (включая изображения)
До сих пор я столкнулся с этой проблемой. . В краске(), я пытаюсь нарисовать 5 прямоугольников, нечетные синие и пустые, даже те, красные и заполненные Тем не менее, вместо того, чтобы хороший шахматном порядке, я получаю это:
Может кто-нибудь поможет мне понять, почему он это делает?
Код:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Rectangles extends JPanel {
public static void main(String[] a) {
JFrame f = new JFrame();
f.setSize(800, 800);
f.add(new Rectangles());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
public void paint(Graphics g) {
int x = 15;
int y = 15;
int w = 15;
int h = 15;
for(int i = 0; i < 5; i++){
if(i%2==0){
g.setColor(Color.RED);
g.fillRect (x, y, x+w, y+h);
}
else{
g.setColor(Color.BLUE);
g.drawRect (x, y, x+w, y+h);
}
x+=15;
System.out.println(Integer.toString(x) + ' ' + Integer.toString(y) + '|' + Integer.toString(w) + ' ' + Integer.toString(h));
}
}
}
Выход из оператора Println (х, у, ширина, высота):
30 15|15 15
45 15|15 15
60 15|15 15
75 15|15 15
90 15|15 15
Похоже было перекрытие первого изображения, так что я модифицировал код и попытался это:
for(int i = 0; i < 5; i++){
g.setColor(Color.BLUE);
g.drawRect (x, y, x+w, y+h);
x+=15;
}
Вот что происходит с этим кодом:
Почему существует перекрытие? Что вызывает это?
Кроме того, кто-нибудь знает хороший способ сделать легко изменяемый массив прямоугольников? Или какие-либо хорошие советы или инструменты для рисования этого типа платы?
Спасибо большое! Я пойду проверю разницу между краской и компонентом paint. – TaylorTheDeveloper
Рад, что это может помочь ... – MadProgrammer