Fórum Centralizar janelas na tela #568020

09/04/2009

0

Ponham naquela classe que tem tudo quanto eh tipo de código de ajuda...hehe
public static void center(Component componente)
  {
      // Centraliza a janela de abertura no centro do desktop.
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        Rectangle r      = componente.getBounds();
      // Dimensões da janela
        int widthSplash = r.width ;
        int heightSplash = r.height;

      // calculo para encontrar as cooredenadas X e Y para a centralização da janela.
        int posX = (screen.width / 2) - ( widthSplash / 2 );
        int posY = (screen.height / 2) - ( heightSplash / 2 );

        componente.setBounds(posX,posY,widthSplash,heightSplash);
  }
Raphael Costa

Raphael Costa

Responder

Posts

09/04/2009

Como posso fazer para que um JInternalFrame fique centralizado em um JDesktopPane. Abraço!!!
Responder

Gostei + 0

09/04/2009

Deivson Costa

Pessoal, Naum precisa complicar ja ouviram falar de setLocationRelativeTo ??? Passe como parametro o frame que vc quer centralizar... se vc passar null como parametro ele centraliza no desktop...
Responder

Gostei + 0

09/04/2009

Deivson Costa

comecei programar em Java no dia 26 de Julho de de 2004. Tive um monte de Dúvidas, mas entrando neste site estou resolvendo todas. Essa de centralizar era uma. Valeu pela diga ai deivison. abraço a todos.
Responder

Gostei + 0

09/04/2009

Deivson Costa

o "setLocationRelativeTo" funcionou perfeitamente. Obrigado pela dica!
Responder

Gostei + 0

09/04/2009

Deivson Costa

no Jframe funciona. Mas en JInternalFrame ??? crie o metodo: public void centralizar(JDesktopPane dp) { Dimension ds = dp.getSize(); Dimension dw = this.getSize(); this.setLocation((ds.width - dw.width) / 2, (ds.height - w.height) / 2); } e passe como parametro o JDesktoPane. supondo que (this) seja um JInternalFrame não sei se fui claro. Mas é isso Tony Amorim
Responder

Gostei + 0

09/04/2009

Deivson Costa

Como faço para deixar o JFrame centralizado e fixo no meio da tela, sem que o usuário possa arrasta-lo? :shock:
Responder

Gostei + 0

16/09/2009

Deivson Costa

Que lugar da classe que eu devo colocar esse bloco de código? Eu coloquei logo no inicio da classe mas não mudou nada. A janela sempre aparece alinahda na esquerda da tela.
Responder

Gostei + 0

17/09/2009

Deivson Costa

[quote="Sidplay"]Que lugar da classe que eu devo colocar esse bloco de código? Eu coloquei logo no inicio da classe mas não mudou nada. A janela sempre aparece alinahda na esquerda da tela.
usa esse componente
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class JForm extends JFrame {
private static final long serialVersionUID = 1L;
public static final int CENTER_SCREEN = 0;
public static final int FULL_SCREEN = 1;
private int sHeight;
private int sWidth;
private JPanel jp;

public void setIconImage(String fileName){
	ImageIcon ico = new ImageIcon(fileName);
	this.setIconImage(ico.getImage());
}
public void setScreen(int screenType){
	Toolkit tk = Toolkit.getDefaultToolkit(); 
	Dimension scrSize = tk.getScreenSize();
	switch(screenType){
		case 0:
			this.setSize(this.sWidth,this.sHeight);
			int scrWidth = scrSize.width - this.getWidth(); 
			int scrHeight = scrSize.height - this.getHeight();
			this.setLocation(scrWidth/2,scrHeight/2);
			break;
		case 1:
			this.setLocation(0,0);
			this.setSize(scrSize.width, scrSize.height);
			break;
	}
}

public void Show(){
	this.setVisible(true);
}

public void Close(){
	System.exit(0);
}

public JForm(String title,int Height,int Width){
    try {  
   	UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
   	this.sHeight = Height;
   	this.sWidth = Width;
   	jp = new JPanel(null);
   	this.setContentPane(jp);
   	this.setTitle(title);
	this.setSize(this.sWidth, this.sHeight);
	this.setDefaultCloseOperation(3);
    } catch (IllegalAccessException e) {} catch (ClassNotFoundException e) {  
    } catch (InstantiationException e) {} catch (UnsupportedLookAndFeelException e) {}
}

}
Responder

Gostei + 0

18/09/2009

Deivson Costa

A partir do Java 1.4, não é necssário computar explicitamente as dimensões da tela e da janela para poder centralizá-la. Basta invocar o método [b]setLocationRelativeTo[/b]. Esse método recebe como parametro um componente, que será tomado como base para centralizar sua janela. Se o parâmetro for null, então a janela será centralizada em relação ao próprio dispositivo gráfico (monitor)
Responder

Gostei + 0

18/09/2009

Deivson Costa

[quote="staroski"]A partir do Java 1.4, não é necssário computar explicitamente as dimensões da tela e da janela para poder centralizá-la. Basta invocar o método [b]setLocationRelativeTo[/b]. Esse método recebe como parametro um componente, que será tomado como base para centralizar sua janela. Se o parâmetro for null, então a janela será centralizada em relação ao próprio dispositivo gráfico (monitor)
Mas que lugar da classe que eu uso isso? É fora do construtor da classe mesmo? Eu tentei assim e não muda nada também: this.setLocationRelativeTo(null);
Responder

Gostei + 0

19/09/2009

Deivson Costa

[quote="Sidplay"][quote="staroski"]A partir do Java 1.4, não é necssário computar explicitamente as dimensões da tela e da janela para poder centralizá-la. Basta invocar o método [b]setLocationRelativeTo[/b]. Esse método recebe como parametro um componente, que será tomado como base para centralizar sua janela. Se o parâmetro for null, então a janela será centralizada em relação ao próprio dispositivo gráfico (monitor)
Mas que lugar da classe que eu uso isso? É fora do construtor da classe mesmo? Eu tentei assim e não muda nada também: this.setLocationRelativeTo(null);
Não existe um lugar fixo na classe, depende de como voce escreveu a classe! O setLocationRelativeTo normalmente tem que vir depois da janela ter o tamanho definido e melhor antes que a janela esteja visível. []
Responder

Gostei + 0

20/09/2009

Deivson Costa

simu ou quem souber, eu coloquei aqui e nada:
public CadastroCliente() {
		super();
		initialize();
		this.setLocationRelativeTo(null);

		 
		    		
	}
E aqui também depois do setSize e nada:
private void initialize() {
		this.setSize(554, 474);
		this.setLocationRelativeTo(null);
		this.setContentPane(getJContentPane());
		this.setTitle("Cadastro de Clientes");
		 
	
		
	}
Continua sempre igual.
Responder

Gostei + 0

21/09/2009

Deivson Costa

[quote="Sidplay"]simu ou quem souber, eu coloquei aqui e nada:
public CadastroCliente() {
		super();
		initialize();
		this.setLocationRelativeTo(null);

		 
		    		
	}
E aqui também depois do setSize e nada:
private void initialize() {
		this.setSize(554, 474);
		this.setLocationRelativeTo(null);
		this.setContentPane(getJContentPane());
		this.setTitle("Cadastro de Clientes");
		 
	
		
	}
Continua sempre igual.
e o CadastroCliente é o JFrame qe está sendo mostrado? Como faz para mostrar ele? Aqui um exemplo mínimo (usando parte do seu código):
package cfh.forum.javafree;

import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * @version 1.0, 21.09.2009
 */
@SuppressWarnings("serial")
public class CadastroCliente extends JFrame {
    
    public CadastroCliente() {
        super();
        initialize();
        this.setLocationRelativeTo(null);
    }

    private void initialize() {
        this.setSize(554, 474);
        this.setLocationRelativeTo(null);
        this.setContentPane(getJContentPane());
        this.setTitle("Cadastro de Clientes");
    }

    private Container getJContentPane() {
        JPanel panel = new JPanel();
        panel.add(new JLabel("TESTE"));
        return panel;
    }
    
    public static void main(String[] args) {
        JFrame frame = new CadastroCliente();
        frame.setVisible(true);
    }
}
[]]
Responder

Gostei + 0

21/09/2009

Deivson Costa

Simu, esse Cadastro de Clientes é o frame que está sendo mostrado sim. É a GUI do programa, eu to fazendo tudo na mesma classe. Mas essa classe não tem método main, eu coloquei aqui pra testar mas ainda continua igual. Você quer dar uma olhada no código inteiro? Coloquei em anexo a classe. Ela tá bem grande porque essa é uma das telas do meu TCC que eu estou fazendo.
Responder

Gostei + 0

21/09/2009

Deivson Costa

[quote="Sidplay"]Simu, esse Cadastro de Clientes é o frame que está sendo mostrado sim. É a GUI do programa, eu to fazendo tudo na mesma classe. Mas essa classe não tem método main, eu coloquei aqui pra testar mas ainda continua igual. Você quer dar uma olhada no código inteiro? Coloquei em anexo a classe. Ela tá bem grande porque essa é uma das telas do meu TCC que eu estou fazendo.
Esse JFrame "Cadastro de Clientes - Stelzer Consultoria" está aparencendo centralizado corretamente (apagando as referências às classes não postadas)! Repetindo: "Como faz para mostrar ele?", como é o código? ou será que tem algum outro código externo (onde essa classe é instanciada, ClienteModel, ...) alterando a posição do JFrame? tambem pode ser algum problema relacionado com o tempo de acesso a banco de dados... outra tentativa:
...
    private void initialize() {
        this.setSize(554, 474);
        this.setContentPane(getJContentPane());
        this.setTitle("Cadastro de Clientes - Stelzer Consultoria");
        this.setLocationRelativeTo(null);
    }
[]]
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar