绘JPanel背景

Jes*_*ssy 4 java background paint jpanel

如何告诉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)

}
Run Code Online (Sandbox Code Playgroud)

cam*_*ckr 5

如果你想在JPanel上绘画,那么覆盖JPanel,而不是JFrame.

您应该重写JPanel的paintComponent()方法.阅读自定义绘画的Swing教程中的部分以获取工作示例.