我不知道是什么使它打印了整个十字架,它只打印了左上角

import java.awt.Graphics;
import java.awt.Color;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class RedCross extends JPanel{
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        int xCenter = getWidth() / 2;
        int yCenter = getHeight() / 2;
        g.setColor(Color.RED);
        g.fillRect(xCenter, yCenter, 10, 50);
        g.fillRect(xCenter, yCenter, 50, 10);
    }

   public static void main(String[] args){
      JFrame window = new JFrame("Red Cross");
      window.setBounds(300, 300, 200, 200);
      window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      RedCross panel = new RedCross();
      panel.setBackground(Color.WHITE);
      Container c = window.getContentPane();
      c.add(panel);
      window.setVisible(true);
   }
}

最佳答案

您似乎正在从中心画出十字架的线,然后向外走。如果这是您要绘制的方式,则需要十字的所有4个“臂”,而不是代码中的两个“臂”。

您可以分别绘制四个“手臂”:

    g.fillRect(xCenter-5, yCenter, 10, 50);
    g.fillRect(xCenter-5, yCenter-50, 10, yCenter);
    g.fillRect(xCenter-50, yCenter-5, 50, 10);
    g.fillRect(xCenter, yCenter-5, 50, 10);


这将使一个宽度为100px且高度为100px的红叉居中。

关于java - 程序RedCross.java应该在白色背景上显示一个红叉。只是在十字架的左上方,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21048126/

10-10 01:50