Classes herdarem apenas um método de outra

10 respostas
S

Bom dia pessoal,

Uma pequena dúvida:

Tenho um JFrame, no qual tem um método de abrir posicionado justamente no meio da tela. A questão é que, eu gostaria que as outras classes (outros JFrames) tivessem esse mesmo método sem eu ter que ficar setando o mesmo código que coloquei na primeira. Acho que não é o caso de fazer extends, pois eu só quero esse método específico, certo? Eu gostaria de entender uma outra forma de fazer isso.

Detalhe: estou usando VEP.

Obrigado.

10 Respostas

guilherme.dio

Crie uma interface então, e implemente nas suas janelas que “podem ser centralizadas”:

public interface Centralizavel
{
   public void centraliza();
}
public class meuFrame extends JFrame implements Centralizavel
{
   public void centraliza()
  {
     //Implementação
  }
}

Mas porque não usar o “setLocationRelativeTo” do proprio JFrame ?

S

Então, na verdade eu só queria entender o conceito de como fazer mesmo, independente de qualquer método. Então é pra isso que servem as interfaces?? rsrs. E mesmo assim, acho que esse método só serviria para JFrames, e não funcionaria para JInternalFrame, né?

Obrigado.

S

Então, na verdade eu só queria entender o conceito de como fazer mesmo, independente de qualquer método. Então é pra isso que servem as interfaces?? rsrs. E mesmo assim, acho que esse método só serviria para JFrames, e não funcionaria para JInternalFrame, né?

Obrigado.

Mas eu terei que fazer isso em todas as classes?

public class meuFrame extends JFrame implements Centralizavel   
{   
   public void centraliza()   
  {   
     // o que seria essa implementação? O código do método que terei que fazer em todas as classes?
 
  }
}
guilherme.dio

Pra JInternalFrames normalmente eu implemento minha logica de centralização em relação ao JDesktopPane.

Realmente não sei se há algum método do JinternalFrame para centralizar, teria que pesquisar.

S

Então, mas referente a implementação, o que eu colocaria nesse bloco que você comentou?

Pensei que fosse só criar a interface, colocar o implements nas classes e chamar o método da interface.

Não entendi esse bloco que vai acompanhar cada classe que implementar o método da interface. :expressionless:

guilherme.dio
Soruji:
Então, na verdade eu só queria entender o conceito de como fazer mesmo, independente de qualquer método. Então é pra isso que servem as interfaces?? rsrs. E mesmo assim, acho que esse método só serviria para JFrames, e não funcionaria para JInternalFrame, né?

Obrigado.

Mas eu terei que fazer isso em todas as classes?

public class meuFrame extends JFrame implements Centralizavel   
{   
   public void centraliza()   
  {   
     // o que seria essa implementação? O código do método que terei que fazer em todas as classes?
 
  }
}

Não ! rsrs

Eu só te dei uma solução rapida para seu problema, mas isso é gambi.

Se você realmente quer centralizar algo, entao crie uma classe nova chamada Centralizador com métodos de centralizar, por exemplo:

public class Centralizador
{
   public void centraliza(JFrame frame)
  {
      //Implementação...
   }

   public void centraliza(JInternalFrame internalFrame)
  {
     //Implementação...
  }
}
S

Mas como ficará nas classes que eu for usar o método, então??? Terei que instanciar essa classe Centralizador em todas e passar o JFrame como argumento em todas???

guilherme.dio

Soruji:
Então, mas referente a implementação, o que eu colocaria nesse bloco que você comentou?

Pensei que fosse só criar a interface, colocar o implements nas classes e chamar o método da interface.

Não entendi esse bloco que vai acompanhar cada classe que implementar o método da interface. :|

Implementação, é para você inserir a logica de centralização, entendeu ?

Sempre faço asism pra centralizar:

Dimension monitor = Toolkit.getDefaultToolkit().getScreenSize();
frm.setBounds(monitor.width/2 - frm.getWidth()/2,monitor.height/2 - frm.getHeight()/2,frm.getWidth(),frm.getHeight());
ViniGodoy

O código mais simples para se centralizar um frame é:

this.setLocationRelativeTo(null);
guilherme.dio

[quote=ViniGodoy]O código mais simples para se centralizar um frame é:

this.setLocationRelativeTo(null);

Vini, mas para JinternalFrame este método não existe, correto ?

Criado 18 de maio de 2012
Ultima resposta 18 de mai. de 2012
Respostas 10
Participantes 3