Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从PaintComponent中访问对象方法_Java_Graphics - Fatal编程技术网

Java 从PaintComponent中访问对象方法

Java 从PaintComponent中访问对象方法,java,graphics,Java,Graphics,我有一些编程经验,但对面向对象编程和Java是新手。从其他类调用类方法时遇到问题。更具体地说,我试图从myDrawPanel.drawBoard中的Paintcomponent调用该方法。编译器告诉我,在编译类mypanel时,无法识别符号“board”。非常感谢任何建议/信息:代码如下: import javax.swing.* ; import java.awt.* ; import java.awt.event.* ; import java.awt.Graphics; public c

我有一些编程经验,但对面向对象编程和Java是新手。从其他类调用类方法时遇到问题。更具体地说,我试图从myDrawPanel.drawBoard中的Paintcomponent调用该方法。编译器告诉我,在编译类mypanel时,无法识别符号“board”。非常感谢任何建议/信息:代码如下:

import javax.swing.* ;
import java.awt.* ;
import java.awt.event.* ;
import java.awt.Graphics;

public class Connect {

  public static PBoard board = new PBoard() ;

  public void main(String[] args) {

      Connect gui = new Connect() ;
      gui.go() ;
  }

  public void go() {

      JFrame frame = new JFrame() ;
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ; 

      MyDrawPanel drawPanel = new MyDrawPanel() ;

      frame.getContentPane().add(BorderLayout.CENTER, drawPanel) ;

      frame.setSize(800,800) ;
      frame.setVisible(true) ;  

      }  
    }

import java.awt.* ;
import javax.swing.* ;

public class MyDrawPanel extends JPanel {

  public  void paintComponent(Graphics g) {

  board.drawBoard(g) ;

}

import javax.swing.* ;
import java.awt.* ;
import java.awt.event.* ;   

public class PBoard {

    int startx, starty, width, height ;
    int i, j ;
    final int X_BOARD_POS = 200 ;
    final int Y_BOARD_POS = 200 ;
    final int SQUARE_SIZE = 50 ;

  public PBoard() {

  }

  public  void drawBoard(Graphics g) {

    startx = X_BOARD_POS ;
    starty = Y_BOARD_POS ; 
    width = SQUARE_SIZE ;
    height = SQUARE_SIZE ;

    for (i = 0; i<=7 ; i++){  
      starty = Y_BOARD_POS ;
      for (j = 0 ; j<= 7 ; j++){
        g.setColor(Color.gray) ;
        g.fillRect(startx,starty,width,height) ;
        g.setColor(Color.black) ;
        g.drawRect(startx,starty,width,height) ;
        starty = starty + SQUARE_SIZE ;
      }
      starty = X_BOARD_POS ;
      startx = startx + SQUARE_SIZE ;
    }
  }
}
板是Connect的静态成员。因为MyDrawPanel不是Connect的子类,所以不能直接访问它。使用Connect.board.drawBoardg代替board.drawBoardg