Voici deux exemples du même code qui dessine un ensemble de rectangles superposés en diagonale, sauf dans le second cas, il y a des parenthèses autour de "i^2" pour le x et le y valeurs. Je crois que les rectangles devraient commencer à (0,0) dans les deux cas, mais dans le premier cas ils ne commencent pas à l'origine. Au lieu de cela, ils commencent légèrement à partir de l'origine. Pourquoi y a-t-il une différence lorsque les rectangles sont ajoutés au JFrame?Java, JFrame, JComponent, Rectangles
utilisant javax.swing.JComponent javax.swing.JFrame et 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);
}
Mon code est en deux classes. Voici la classe principale:
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);
}
}
Et voici le code pour la classe DrawingComponent qui fait Rectangles à ajouter à la 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);
}
}
}
Comment faites-vous la peinture? Envisagez de fournir un exemple exécutable – MadProgrammer