我想用Java语言把单桅帆船做成一个三角形

我想用Java语言把单桅帆船做成一个三角形,java,Java,我试图用图形面板上的单桅帆船做一个三角形,但我似乎无法让代码正常工作。这就是我目前所拥有的 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; public class PyramidSoupCans { /** * @param args */ public static void main(String[] args) { DrawingPanel panel = new

我试图用图形面板上的单桅帆船做一个三角形,但我似乎无法让代码正常工作。这就是我目前所拥有的

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
public class PyramidSoupCans {
  /**
    * @param args
    */
  public static void main(String[] args) {
    DrawingPanel panel = new DrawingPanel(800, 800);
    panel.setBackground(new Color(219, 204, 186));
    Graphics g = panel.getGraphics();
    for(int i=1;i<=10;i++){
      for(int j=1;j<=10-i; j++){
        System.out.print(" ");
      }
      for (int k=1;k<=2 * i-1;k++){
        draw_can( g, i, k);
      }
      System.out.println();
    }}

  public static void draw_can(Graphics g, int x, int y){
    int sizeX = 225;
    int sizeY = 340;
    int cornerX = 37;
    int cornerY = 80;
    g.setColor(new Color(138, 138, 138));
    g.fillRoundRect(cornerX, 246, sizeX, 180, 150, 45);
    g.setColor(new Color(243, 243, 243));
    g.fillRoundRect(cornerX, cornerY, sizeX, sizeY, 150, 45);
    g.setColor(new Color(162,22,5));
    g.fillRoundRect(cornerX, 70, sizeX, 190, 150, 45);
    g.setColor(new Color(138, 138, 138));
    g.fillOval(cornerX, 65, sizeX, 45);
    g.setColor(Color.white);
    g.setFont(new Font("Serif",Font.BOLD+Font.ITALIC,45));
    g.drawString("Campbell's",45,150);
    g.setFont(new Font("SanSerif",Font.BOLD,20));
    g.drawString("CONDENSED",85,200);
    g.setColor(new Color(162,22,5));
    g.setFont(new Font("SanSerif",Font.BOLD,40));
    g.drawString("TOMATO",60,360);
    g.setFont(new Font("Serif",Font.BOLD,40));
    g.setColor(new Color(157, 131, 82));
    g.fillOval(113, 223, 70, 70);
    g.drawString("SOUP",95,410);
  }}
导入java.awt.Color;
导入java.awt.Font;
导入java.awt.Graphics;
公共类金字塔形机箱{
/**
*@param args
*/
公共静态void main(字符串[]args){
DrawingPanel=新的DrawingPanel(800800);
面板.立根背景(新颜色(219204186));
Graphics g=panel.getGraphics();

对于(inti=1;i我不能画三角形,但我确实得到了汤罐来画

我对你的代码做了很多修改。我保留了你的类名,PyramidSoupCans

重要的变化包括

  • 我决定使用Swing组件,因为您命名了一个DrawingPanel,但它并没有包含在代码中

  • 您总是通过调用SwingUtilities invokeLater方法来启动Swing应用程序。这确保了Swing组件在上创建和更新

  • 我从一个JPanel创建了一个绘图面板,并将JPanel放在一个带有一些基本装饰的JFrame中

  • 我将您的绘图代码放在Swing提供绘图对象的地方。当您想要在Swing GUI上绘图时,您应该始终覆盖JPanel paintComponent方法

  • 代码如下:

    package com.ggl.testing;
    
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Graphics;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
    
    public class PyramidSoupCans implements Runnable {
    
        private JFrame frame;
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new PyramidSoupCans());
        }
    
        @Override
        public void run() {
            frame = new JFrame("Pyramid Soup Cans");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            DrawingPanel panel = new DrawingPanel(300, 500);
            frame.add(panel);
    
            frame.pack();
            frame.setLocationByPlatform(true);
            frame.setVisible(true);
        }
    
        public class DrawingPanel extends JPanel {
    
            private static final long serialVersionUID = -4147433638611078320L;
    
            public DrawingPanel(int width, int height) {
                this.setPreferredSize(new Dimension(width, height));
                this.setBackground(new Color(219, 204, 186));
            }
    
            @Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
    
                int sizeX = 225;
                int sizeY = 340;
                int cornerX = 37;
                int cornerY = 80;
    
                g.setColor(new Color(138, 138, 138));
                g.fillRoundRect(cornerX, 246, sizeX, 180, 150, 45);
                g.setColor(new Color(243, 243, 243));
                g.fillRoundRect(cornerX, cornerY, sizeX, sizeY, 150, 45);
                g.setColor(new Color(162, 22, 5));
                g.fillRoundRect(cornerX, 70, sizeX, 190, 150, 45);
                g.setColor(new Color(138, 138, 138));
                g.fillOval(cornerX, 65, sizeX, 45);
                g.setColor(Color.white);
                g.setFont(new Font("Serif", Font.BOLD + Font.ITALIC, 45));
                g.drawString("Campbell's", 45, 150);
                g.setFont(new Font("SanSerif", Font.BOLD, 20));
                g.drawString("CONDENSED", 85, 200);
                g.setColor(new Color(162, 22, 5));
                g.setFont(new Font("SanSerif", Font.BOLD, 40));
                g.drawString("TOMATO", 60, 360);
                g.setFont(new Font("Serif", Font.BOLD, 40));
                g.setColor(new Color(157, 131, 82));
                g.fillOval(113, 223, 70, 70);
                g.drawString("SOUP", 95, 410);
            }
        }
    }
    

    @RzRasel所以…你刚才所做的编辑没有帮助。请告诉我们你的问题是什么。你只告诉我们你想做什么,但你没有告诉我们你的代码有什么问题。