2016-03-21 2 views
-1

Я создаю соединение с четырьмя играми с графическим интерфейсом, и я застрял в перезапуске игры. Моя цель состоит в том, что когда пользователь нажимает кнопку перезагрузки на MyBoard JPanel, игра перезапускается. Я использую mouseListener, и я хочу получить доступ к панели объектов из дочернего класса MyBoard.Доступ к объекту родительского класса из дочернего класса

public class Mediator(){ 
     public Mediator(){ 
      MyBoard panel = new MyBoard(); 
      JFrame board = new JFrame("Connect4"); 
      board.setSize(728, 728); 
      board.setLocationRelativeTo(null); 
      board.add(panel); 
      board.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      board.setVisible(false); 
      board.setFocusable(true); 
      board.setResizable(false); 
     } 
} 



public class MyBoard extends JPanel implements MouseListener, MouseMotionListener { 
    public MyBoard() {} 
      @Override 
      public void mouseClicked(MouseEvent e) { 
       startX = e.getX(); 
       startY = e.getY(); 
       //Restart Button 
       if (startX > rectButton1.x && startX < rectButton1.x + rectButton1.width && startY > rectButton1.y 
        && startY < rectButton1.y + rectButton1.height) { 
      //I'm stuck here 
     } 
+1

Что вы подразумеваете под «перезагрузкой посредника»? –

+0

Мне нужно перезапустить объект посредника по моему основному методу. Мой основной метод создает экземпляр посредника. Мне нужно перезапустить JFrame, когда пользователь нажимает кнопку перезапуска. – sptBot

+0

'MyBoard' не является дочерним элементом посредника класса в любом случае,' MyBoard' НЕ наследует от «Посредника», поэтому он не может быть ребенком. 'MyBoard' наследует от' JPanel', поэтому 'JPanel' является родителем' MyBoard', а не 'Mediator' – Popeye

ответ

1

Используйте ссылку на Посредника при создании MyBoard

public class Mediator(){ 

    public Mediator(){ 
     MyBoard panel = new MyBoard(this); 
     ... 


public class MyBoard extends JPanel implements MouseListener, MouseMotionListener { 
     private Mediator mediator; 

     public MyBoard(Mediator mediator) { 
       this.mediator = mediator; 
     ... 

Кроме того, вы, возможно, придется перенести строительство новой доски для перезагрузки метод вместо того, чтобы делать это в Mediator конструктору.

+0

Ненавижу, как вы назвали родитель-посредник, так как он не является родителем' MyBoard'. – Popeye

+0

@Popeye Ok. Нет проблем. Я изменю его. – RubioRic

+0

Попоя Посредник создает MyBoard, OP не говорит о наследовании. Вы не должны ненавидеть нас только для того, чтобы толковать родительство в широком смысле. :-) – RubioRic

Смежные вопросы