繁体   English   中英

Java,JFrame,JComponent,矩形

[英]Java, JFrame, JComponent, Rectangles

这是完全相同的代码的两个实例,它们绘制了沿对角线叠置的一堆矩形,但在第二个实例中,x和y值的“ i ^ 2”周围都有括号。 我认为在两种情况下矩形都应从(0,0)开始,但在第一种情况下,它们不应从原点开始。 相反,它们从起点开始略有偏离。 将矩形添加到JFrame时为什么会有区别?

使用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);
    }
}

这是用于使Rectangles添加到JFrame的DrawingComponent类的代码:

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);
        }
    }
}

表达式20*i^220*(i^2)

按位XOR运算符^优先级低于乘法* ,因此两个表达式将产生不同的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM