2015-04-09 4 views
0

Я новичок в Java, и в настоящее время я разрабатываю графический интерфейс для игры в блэкджек. У меня возникают проблемы с отображением компонентов на экране с помощью метода рисования. Метод paint расположен в подклассе, называемом play (см. Ниже). Когда краска находится вне игры, но внутри BlackJack она работает. Может кто-нибудь мне помочь?Java - метод рисования в подклассе не работает

public class BlackJack extends JFrame 
{ 

. 
. 
. 

public class play implements ActionListener 
{  

    . 
    . 
    . 

    public void paint(Graphics g) 
    { 
     super.paint(g); 

     Font bigFont = new Font("HURTMOLD_", Font.BOLD, 20); 

     g.setFont(bigFont); 
     g.setColor(Color.decode("#52504D")); 

     g.drawString("Dealer", 50, 80); 
     g.drawString("Player", 50, 290); 

     g.setColor(Color.white); 
     g.drawLine(120, 76, 700, 76); 
     g.drawLine(20, 76, 40, 76); 
     g.drawLine(20, 240, 700, 240); 
     g.drawLine(20, 76, 20, 240); 
     g.drawLine(700, 76, 700, 240); 

     g.drawLine(120, 286, 700, 286); 
     g.drawLine(20, 286, 40, 286); 
     g.drawLine(20, 450, 700, 450); 
     g.drawLine(20, 286, 20, 450); 
     g.drawLine(700, 286, 700, 450); 

     g.setColor(Color.blue); 
     g.fillRect(50,113,71,96); 
     g.fillRect(151,113,71,96); 
     g.fillRect(252,113,71,96); 
     g.fillRect(353,113,71,96); 
     g.fillRect(454,113,71,96);   
    } 
    . 
    . 
    . 
} 

} 

ответ

3

Play не подкласс ничего, что свинг умеет рисовать. Вы не можете просто реализовать метод paint в своем классе и активировать его магически.

Попробуйте добавить @Override перед paint методом

@Override 
public void paint(Graphics g) 
{ 

Это не будет компилироваться. Причина, по которой он компилируется, заключается в том, что компилятор выводит вызов на super.paint так же, как метод JFramepaint, который вы действительно не хотите делать.

Вместо этого попробуйте простирающийся Play от чего-то, как JPanel и переопределение это paintComponent метод вместо этого, добавьте экземпляр Play к раме, как и любой другой компонент.

public class Play extends JPanel implements ActionListener 
{  

    . 
    . 
    . 

    @Override 
    protected void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 

     Font bigFont = new Font("HURTMOLD_", Font.BOLD, 20); 

     g.setFont(bigFont); 
     g.setColor(Color.decode("#52504D")); 

     g.drawString("Dealer", 50, 80); 
     g.drawString("Player", 50, 290); 

     g.setColor(Color.white); 
     g.drawLine(120, 76, 700, 76); 
     g.drawLine(20, 76, 40, 76); 
     g.drawLine(20, 240, 700, 240); 
     g.drawLine(20, 76, 20, 240); 
     g.drawLine(700, 76, 700, 240); 

     g.drawLine(120, 286, 700, 286); 
     g.drawLine(20, 286, 40, 286); 
     g.drawLine(20, 450, 700, 450); 
     g.drawLine(20, 286, 20, 450); 
     g.drawLine(700, 286, 700, 450); 

     g.setColor(Color.blue); 
     g.fillRect(50,113,71,96); 
     g.fillRect(151,113,71,96); 
     g.fillRect(252,113,71,96); 
     g.fillRect(353,113,71,96); 
     g.fillRect(454,113,71,96);   
    } 
    . 
    . 
    . 
} 

} 
+0

Я внесла все изменения, которые вы предложили, и это сработало. Спасибо вам искренне MadProgrammer. –

+0

Рад, что это может помочь – MadProgrammer

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