Java 如何在JPanel中绘制矩形

Java 如何在JPanel中绘制矩形,java,swing,user-interface,draw,paintcomponent,Java,Swing,User Interface,Draw,Paintcomponent,我试图在JFrame中的JPanel中绘制一个矩形。我想使用paintComponents(Graphics g)方法并覆盖它,但由于某些原因,矩形没有像我希望的那样出现在JPanel中。任何帮助都将不胜感激 public class RectangleFrame extends JFrame implements ActionListener { JPanel buttonPanel; JButton saveImage; JButton clearImage;

我试图在JFrame中的JPanel中绘制一个矩形。我想使用paintComponents(Graphics g)方法并覆盖它,但由于某些原因,矩形没有像我希望的那样出现在JPanel中。任何帮助都将不胜感激

public class RectangleFrame extends JFrame implements ActionListener {
    JPanel buttonPanel;
    JButton saveImage;
    JButton clearImage;
    JCheckBox intersections;
    JCheckBox union;
    JPanel drawingArea;



public RectangleFrame()
{
    super();
    setTitle("Rectangles");
    setSize(600,600);
    setResizable(false);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    buttonPanel = new JPanel();
    buttonPanel.setBorder(BorderFactory.createLineBorder(Color.black));
    this.add(buttonPanel, BorderLayout.SOUTH);

    intersections = new JCheckBox("Draw Intersections");
    buttonPanel.add(intersections);

    union = new JCheckBox("Draw Union");
    buttonPanel.add(union);

    saveImage = new JButton("Save Image");
    saveImage.setMargin(new Insets(0,0,0,0));
    buttonPanel.add(saveImage);

    clearImage = new JButton("Clear Image");
    clearImage.setMargin(new Insets(0,0,0,0));
    buttonPanel.add(clearImage);

    drawingArea = new JPanel();
    drawingArea.setBorder(BorderFactory.createLineBorder(Color.blue));
    this.add(drawingArea, BorderLayout.CENTER); 
}
}

      class RectanglePanel extends JPanel
{
public RectanglePanel()
{
    super();
}



@Override
public void paintComponent(Graphics g) 
{
    super.paintComponent(g);

    g.setColor(Color.BLUE);
    g.fillRect(25,25,100,30);       
}


}
以下是我在单独类中的主要方法:

    public class SwingRectangle
{

/**
 * @param args
 */
public static void main(String[] args) 
{
    // TODO Auto-generated method stub
    RectangleFrame frame = new RectangleFrame();
    RectanglePanel panel = new RectanglePanel();
    frame.setVisible(true);

}

}

您没有将
矩形面板添加到框架中

drawingArea = new JPanel();
应该是

drawingArea = new RectanglePanel();
其他要点:

  • 您仍然需要覆盖
    paintComponent
    ,而不是@David so+1向他建议的
    paintComponents
  • SwingRectangle
    中创建的面板未使用

您没有将
矩形面板添加到您的框架中

drawingArea = new JPanel();
应该是

drawingArea = new RectanglePanel();
其他要点:

  • 您仍然需要覆盖
    paintComponent
    ,而不是@David so+1向他建议的
    paintComponents
  • SwingRectangle
    中创建的面板未使用

您在哪里将
矩形面板添加到框架中?我相信您希望覆盖的方法是paintComponent(Graphics g)(不带“s”)。然后确保调用super.paintComponent(g)。paintComponent(g)是JComponent上的一种方法。paintComponents(g)是容器上的一种方法。在给出答案后删除问题的新趋势是什么?最近我已经看过好几次了。你在哪里把你的
矩形面板添加到框架中呢?我相信你想要覆盖的方法是paintComponent(Graphics g)(不带's')。然后确保调用super.paintComponent(g)。paintComponent(g)是JComponent上的一种方法。paintComponents(g)是容器上的一种方法。在给出答案后删除问题的新趋势是什么?我最近已经看过好几次了。