我试图用Java中的单桅帆船制作一个三角形

时间:2015-03-16 14:50:11

标签: 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 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);
  }}

我试图用一个单桅帆船制作一个三角形可以在图形面板中制作,但我似乎无法使代码正常工作。这就是我到目前为止所拥有的。 这就是全部。感谢

1 个答案:

答案 0 :(得分:0)

我无法制作一个三角形,但我确实得到了汤可以画出来。

Pyramid Soup Can

我对您的代码进行了大量更改。我确实保留了你的班级名称PyramidSoupCans。

重要的变化包括。

  1. 我决定使用Swing组件,因为您命名的DrawingPanel并未包含在代码中。

  2. 始终通过调用SwingUtilities invokeLater方法启动Swing应用程序。这可确保在Event Dispatch thread上创建和更新Swing组件。

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

  4. 我将绘图代码放在Swing提供要绘制的Graphics对象的位置。如果要在Swing GUI上绘图,应始终覆盖JPanel paintComponent方法。

  5. 以下是代码:

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