有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

循环Java:GUI需要帮助来确定正确的条件

我想让这一行看起来像下面的图片,我尝试了很多次,这是当前的代码,但它给了我一个不同的外观,所以有什么东西在我的条件下丢失

import javax.swing.JFrame;

import java.awt.Graphics;

import javax.swing.JPanel;

public class MainClass extends JPanel {

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        for (int i = 2; i < 10; i++) {
            for (int x = 10; x > 1; x--) {
                g.drawLine(0, 0, getWidth() / i, getHeight() / x);
                g.drawLine(0, 0, getWidth() / x, getHeight() / i);
                break;
            }
        }
    }

    public static void main(String[] args) {
        JFrame myFrame = new JFrame();
        MainClass panel = new MainClass();
        myFrame.add(panel);
        myFrame.setSize(400, 400);
        myFrame.setLocation(100, 100);
        myFrame.setVisible(true);
    }
}

这是我代码的图片&;想要的形状:

enter image description here


共 (2) 个答案

  1. # 1 楼答案

    使用变量绘制线之间的距离,仅使用一个变量绘制线之间的距离

    import javax.swing.JPanel;
    
    public class MainClass extends JPanel {
    
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);          
           //variable of the begin of point
            int pointIni=0;
            //variable for the distance between lines
            int distance=20;
            //variable for the space between lines
            int cntLines=20;
            for (int i = 0; i < cntLines; i++) 
            {
               g.drawLine(0, 0, pointIni, getHeight()-pointIni);         
               pointIni=pointIni+distance;
            }
        }
    
        public static void main(String[] args) {
            JFrame myFrame = new JFrame();
            MainClass panel = new MainClass();
            myFrame.add(panel);
            myFrame.setSize(400, 400);
            myFrame.setLocation(100, 100);
            myFrame.setVisible(true);
        }
    }
    
  2. # 2 楼答案

    实际上,你不需要一个嵌套的循环。在“预期”图像中,x和y相互依赖。随着x的增长,y会收缩。只用一个环试试