Janela Maximizada sem cobrir barra inferior [Resolvido]

Boa tarde;

Tem como criar uma Janela Maximizada sem cobrir a barra inferior?

Eu consigo criar, mas ela não maximiza totalmente;

Uso o seguinte código


public class JanelaPrincipal extends JFrame{

	/**
	 * 
	 */
	private static final long serialVersionUID = 6523847410354138038L;
	
	Dimension d;
	
	Insets in = Toolkit.getDefaultToolkit().getScreenInsets(this.getGraphicsConfiguration());
	
        public JanelaPrincipal(){
	
	    setLayout(new BorderLayout());
	    Toolkit tk = Toolkit.getDefaultToolkit();  
	    d = tk.getScreenSize(); 
	  
	    int height = d.height-(in.top + in.bottom);
	    
            setSize(d.width,height); //Tamanho
	    setLocation(0, 0); //Onde estará localizada na tela
	    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //O programa só encerra quando essa janela é fechada
	    setTitle("Titulo"); //Titulo 
	    setResizable(false);
		
	    setVisible(true);

	}
}

Desse modo a janela fica na altura sem cobrir a barra inferior da tela, mas não fica maximizada totalmente, fica aquela “fresta” no canto;

Agradeço ajuda;

Para maximizar um JFrame, não é preciso definir seu tamanho via JFrame.setSize(). O caminho correto é usar JFrame.setExtendedState(JFrame.MAXIMIZED_BOTH).
http://stackoverflow.com/questions/5258207/how-to-maximize-a-jframe-thru-code

Acho que não me expressei muito bem;

Eu sei que tem o método para maximizar a Janela inteira;

Quando eu crio a Janela usando esse método que postei, o canto inferior da Janela fica acima da barra inferior (barra de ferramentas);

O problema é o canto superior direito, onde fica o “X” para fechar, ele fica com uma “fresta”;

Tem alguma modo de eu “maximizar” somente a parte de cima da Janela? Assim eu consigo alterar a altura dela, mas sem deixar de ter o aspecto “maximizado”?

Obrigado;

Talvez assim?

import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class TesteSwing extends JFrame {
  private void configuraFrame() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    setLocation(0, 0);

    Rectangle rect = GraphicsEnvironment.getLocalGraphicsEnvironment()
      .getMaximumWindowBounds();
    setSize((int) rect.getWidth(), (int) rect.getHeight());
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override public void run() {
        TesteSwing frame = new TesteSwing();
        frame.configuraFrame();
        frame.setVisible(true);
      }});
  }
}

Com esse código a Janela ficou igual ao que eu tinha feito;

Ele ainda tem uma “fresta” no canto superior direito da Janela, se eu for com o mouse bem no canto superior direito e clicar, ele vai pra tela de trás ao invés de fechar a Janela;

Obrigado pela ajuda;

Até onde eu sei, infelizmente não há como maximizar uma janela apenas no sentido horizontal ou vertical (na plataforma Windows, pelo menos). Se a janela não for maximizada, a “fresta” sempre estará lá, não há saída.

Finalizando, a abordagem que mostrei não invade o espaço da barra de tarefas. O código que você mostrou em sua mensagem inicial ocupa a tela inteira, e supõe que a barra de tarefas pode estar apenas na base ou no topo do monitor, pois compensa apenas a altura. É preciso levar em conta também que a barra de tarefas pode estar nas laterais.

[quote=roger_rf]Até onde eu sei, infelizmente não há como maximizar uma janela apenas no sentido horizontal ou vertical (na plataforma Windows, pelo menos). Se a janela não for maximizada, a “fresta” sempre estará lá, não há saída.

Finalizando, a abordagem que mostrei não invade o espaço da barra de tarefas. O código que você mostrou em sua mensagem inicial ocupa a tela inteira, e supõe que a barra de tarefas pode estar apenas na base ou no topo do monitor, pois compensa apenas a altura. É preciso levar em conta também que a barra de tarefas pode estar nas laterais.[/quote]

Hum… entendi;

Muito obrigado pelo esclarecimento;