Вот два экземпляра одного и того же кода, который рисует кучу прямоугольников, наложенных по диагонали, за исключением второго экземпляра - скобки вокруг «i^2» для x и y значения. Я считаю, что прямоугольники должны начинаться с (0,0) в обоих случаях, но в первом случае они не начинаются в начале координат. Вместо этого они начинают слегка отходить от источника. Почему существует разница, когда прямоугольники добавляются в JFrame?Java, JFrame, JComponent, Rectangles
использованием javax.swing.JComponent javax.swing.JFrame и java.awt.Rectangle
for(int i=0;i<600;i++){
Rectangle rect1 = new Rectangle(20*i^2, 20*i^2, 50, 100);
g2.draw(rect1);
}
for(int i=0;i<600;i++){
Rectangle rect1 = new Rectangle(20*(i^2), 20*(i^2), 50, 100);
g2.draw(rect1);
}
Мой код находится в двух классах. Вот главный класс:
import javax.swing.JFrame;
public class MainClass {
public static void main(String[] args){
JFrame window = new JFrame();
window.setSize(600,600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DrawingComponent drawing = new DrawingComponent();
window.add(drawing);
window.setVisible(true);
}
}
А вот код для класса DrawingComponent, что делает Прямоугольники быть добавлен в JFrame:
import javax.swing.JComponent;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
public class DrawingComponent extends JComponent{
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
for(int i=0;i<600;i++){
Rectangle rect1 = new Rectangle(20*i^2, 20*i^2, 50, 100);
g2.draw(rect1);
}
}
}
Как вы выполняете картину? Рассмотрите возможность создания примерного примера – MadProgrammer