java - 绘制 JPanel 的背景

标签 java background jpanel paint

如何告诉 paint 方法只在 JPanel 上绘制背景,而不是在整个 JFrame 上绘制背景。 我的 JFrame 大小比 JPanel 大。当我尝试为 JPanel 绘制网格背景时,网格似乎被绘制在整个 JFrame 而不仅仅是 JPanel 上。

部分代码:

public class Drawing extends JFrame {
  JPanel drawingPanel;
  ...........
  public Drawing (){
    drawingPanel = new JPanel();
    drawingPanel.setPreferredSize(new Dimension(600,600));
  }


public void paint(Graphics g) 
{
  super.paintComponents(g);
  Graphics2D g2 = (Graphics2D) g;
  g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

  paintBackground(g2); //call a METHOD to paint the for JPANEL
}


private void paintBackground(Graphics2D g2)
{
  g2.setPaint(Color.GRAY);
  for (int i = 0; i < drawingPanel.getSize().width; i += 300) 
  {
     Shape line = new Line2D.Float(i, 0, i, drawingPanel.getSize().height);
     g2.draw(line);
  }

  for (int i = 0; i < drawingPanel.getSize().height; i += 300) 
  {
    Shape line = new Line2D.Float(0, i, drawingPanel.getSize().width, i);
    g2.draw(line);
  }      
} //END private void paintBackground(Graphics2D g2)

}

最佳答案

如果您想在 JPanel 上进行绘画,则覆盖 JPanel,而不是 JFrame。

您应该覆盖 JPanel 的 paintComponent() 方法。阅读 Custom Painting 上的 Swing 教程部分一个工作示例。

关于java - 绘制 JPanel 的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987976/

相关文章:

java - DataInputStream 的结果不一致

java - subListString 索引越界

css - 使用多个 css 背景图像/渐变时,正确的速记语法是什么?

android - 如何从线性渐变中获取当前颜色?

JAVA、GUI JPanel、JFrame、paintComponent、图形

java - 在另一个 JPanel 中重新绘制 JPanel 的问题

java - 重新创建一个 Jpanel

java - 从另一个应用程序接收参数

iOS Swift 在后台下载大量小文件

java - Apache Camel - 如何在 java 中使用属性配置端点