java - 如何在 JPanel 中绘制矩形

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

}

}

最佳答案

您没有将 RectanglePanel 添加到框架中。

drawingArea = new JPanel();

应该是

drawingArea = new RectanglePanel();

其他要点:

  • 您仍然需要重写 paintComponent 而不是 @David 建议的 paintComponents,所以给他+1
  • SwingRectangle 中创建的面板未使用

关于java - 如何在 JPanel 中绘制矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22105489/

相关文章:

java - struts框架中的AppFuse密码管理

java - toString 方法用 2D boolean 数组打印游戏板

java - 使用 xmlrpc 从 java 发布到 wordpress

css - 如何删除 GTK 条目(文本框)边框?

java - 将 JButton 放置在图像上

java - HBox 不可见

java - 按 Stream API 的频率对集合进行排序

java - 在 Java 中使用 JPanels 的数独板

java - 如何区分java计算器中的第一个int和第二个int?

java - 在 JButtons 上绘制焦点