Salve galera, estou tentando fazer um esquema aqui q eh o seguinte…
Tenho um JPanel e nesse JPanel tenho um JButton, eu quero fazer com que esse JButton a cada 2 segundos mude de posicao com um sorteio em Random e respeitando a area do JPanel.
Como fazer pro JButton nao sair da area do JPanel ???
obrigado
mauricioadl
ele esta saindo do jpanel porque os valores que vc esta passando estao maiores ou menores do q a area do jpanel, faça uma logica q nao deixe isso acontecer.
R
raghy
OLA FERNANDO PAIVA, LEMBRO DE NOSSOS COMENTÁRIOS POR AQUI. QUAL ´É A IDÉIA PARA ESTE SEU PROJETO…
EMAIL NA ASSINATURA PARA RECEBER, PROJETO 7 JOGOS EM JAVA.
fernandopaiva
Calcular a área do JPanel, seria base*altura ???
estou tentando fazer assim, mas ainda nao estou conseguindo resolver.
publicclassKillDuckextendsJFrame{privateJPanelpanelNorth,panelCenter,panelSouth;privateJLabelpontuacao,erros;privateJButtonduck;privateIntegerqtdPontos=0;privateIntegerqtdErros=0;publicKillDuck(){super("Kill Duck - v1.0b");setSize(800,600);setResizable(false);setLocationRelativeTo(null);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//criando paineispanelNorth=newJPanel();panelNorth.setLayout(newFlowLayout());panelNorth.setBorder(BorderFactory.createTitledBorder("Pontuação"));panelCenter=newJPanel();panelSouth=newJPanel();panelSouth.setLayout(newFlowLayout());panelSouth.setBorder(BorderFactory.createTitledBorder("Erros"));//pontuacaopontuacao=newJLabel("0");pontuacao.setForeground(Color.BLUE);pontuacao.setFont(newFont("Verdana",1,25));//erroserros=newJLabel("0");erros.setForeground(Color.RED);erros.setFont(newFont("Verdana",1,25));//duckduck=newJButton("duck");//new ImageIcon(getClass().getResource("/imagens/pato.png"))); duck.addMouseListener(newMouseAdapter(){publicvoidmouseReleased(MouseEvente){qtdPontos+=e.getClickCount();pontuacao.setText(String.valueOf(qtdPontos));}});//panel centerpanelCenter.addMouseListener(newMouseAdapter(){publicvoidmouseReleased(MouseEvente){qtdErros+=e.getClickCount();erros.setText(String.valueOf(qtdErros));}});//add componentes panelpanelNorth.add(pontuacao);panelSouth.add(erros);panelCenter.add(duck);//add panelsadd(panelNorth,BorderLayout.NORTH);add(panelCenter,BorderLayout.CENTER);add(panelSouth,BorderLayout.SOUTH);setVisible(true);startGame();}privatevoidstartGame(){//tamanho JPanel centerintwPanel=panelCenter.getSize().width;inthPanel=panelCenter.getSize().height;//variaveis randomicasRandomr1=newRandom();Randomr2=newRandom();//area JPanelintarea=wPanel*hPanel;while(isShowing()){//posicao atual duckintdX=duck.getBounds().x;intdY=duck.getBounds().y;//nova posicao duckintdX_New=r1.nextInt(dX)+200;intdY_New=r2.nextInt(dY)+200;//verifica nova posicao para duck dentro do JPanel if((dX_New*dY_New)<=area){duck.setBounds(dX_New,dY_New,duck.getSize().width,duck.getSize().height);}else{duck.setBounds(0,0,duck.getSize().width,duck.getSize().height);}try{Thread.sleep(1000);}catch(InterruptedExceptionex){Logger.getLogger(KillDuck.class.getName()).log(Level.SEVERE,null,ex);}}}}
como fazer para q o JButton nao saia da área do JPanel ???
obrigado
fernandopaiva
Opa, resolvi. Fixei um tamanho pra área q o JButton vai percorrer e fiz um teste…
ficou assim.
publicclassKillDuckextendsJFrame{privateJPanelpanelNorth,panelCenter,panelSouth;privateJLabelpontuacao,erros;privateJButtonduck;privateIntegerqtdPontos=0;privateIntegerqtdErros=0;privateImageIconiconeDuck;publicKillDuck(){super("Kill Duck - v1.0b");look();setSize(800,600);setResizable(false);setLocationRelativeTo(null);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//criando paineispanelNorth=newJPanel();panelNorth.setLayout(newFlowLayout());panelNorth.setBorder(BorderFactory.createTitledBorder(null," Pontuação ",TitledBorder.CENTER,TitledBorder.DEFAULT_POSITION));panelCenter=newJPanel();panelSouth=newJPanel();panelSouth.setLayout(newFlowLayout());panelSouth.setBorder(BorderFactory.createTitledBorder(null," Erros ",TitledBorder.CENTER,TitledBorder.DEFAULT_POSITION));//pontuacaopontuacao=newJLabel("0");pontuacao.setForeground(Color.BLUE);pontuacao.setFont(newFont("Verdana",1,25));//erroserros=newJLabel("0");erros.setForeground(Color.RED);erros.setFont(newFont("Verdana",1,25));//duck iconeDuck=newImageIcon(getClass().getResource("/imagens/patoVerde.jpg"));duck=newJButton(iconeDuck);duck.addMouseListener(newMouseAdapter(){publicvoidmouseReleased(MouseEvente){qtdPontos+=e.getClickCount();pontuacao.setText(String.valueOf(qtdPontos));duck.setIcon(iconeDuck);}publicvoidmousePressed(MouseEvente){duck.setIcon(newImageIcon(getClass().getResource("/imagens/patoVermelho.jpg")));}});//erros ao clicar no panel centerpanelCenter.addMouseListener(newMouseAdapter(){publicvoidmouseReleased(MouseEvente){qtdErros+=e.getClickCount();erros.setText(String.valueOf(qtdErros));}publicvoidmouseEntered(MouseEvente){Cursorcursor=Cursor.getDefaultCursor();cursor=Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR);setCursor(cursor);}});//altera cursor na area de panel center//add componentes panelpanelNorth.add(pontuacao);panelSouth.add(erros);panelCenter.add(duck);//add panelsadd(panelNorth,BorderLayout.NORTH);add(panelCenter,BorderLayout.CENTER);add(panelSouth,BorderLayout.SOUTH);setVisible(true);startGame();}privatevoidstartGame(){//variaveis randomicasRandomr1=newRandom();Randomr2=newRandom();while(isShowing()){//posicao atual duckduck.setBounds(650,300,duck.getSize().width,duck.getSize().height);intdX=duck.getBounds().x;intdY=duck.getBounds().y;//nova posicao duckintdX_New=r1.nextInt(dX)+1;intdY_New=r2.nextInt(dY)+1;if(dX_New<=650&&dY_New<=300){duck.setBounds(dX_New,dY_New,duck.getSize().width,duck.getSize().height);}else{duck.setBounds(0,0,duck.getSize().width,duck.getSize().height);}try{Thread.sleep(1000);}catch(InterruptedExceptionex){Logger.getLogger(KillDuck.class.getName()).log(Level.SEVERE,null,ex);}}}privatevoidlook(){try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(ClassNotFoundExceptionex){Logger.getLogger(KillDuck.class.getName()).log(Level.SEVERE,null,ex);}catch(InstantiationExceptionex){Logger.getLogger(KillDuck.class.getName()).log(Level.SEVERE,null,ex);}catch(IllegalAccessExceptionex){Logger.getLogger(KillDuck.class.getName()).log(Level.SEVERE,null,ex);}catch(UnsupportedLookAndFeelExceptionex){Logger.getLogger(KillDuck.class.getName()).log(Level.SEVERE,null,ex);}}}