Janela não abre maximizada

Olá, amigos,

Estou com o seguinte problema, quando eu rodo meu aplicativo onde eu uso swing, embora eu tenha colocado no código para a janela abrir maximizada, sempre abre com um tamanho reduzido, aí eu clico no botão X lá no alto à direita da janela, fecho o aplicativo e rodo novamente, aí sempre na segunda vez a janela abre maximizada. Sempre assim. Vejam parte do código abaixo:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Programa03 extends JFrame implements ActionListener, KeyListener
{
     JButton B1, B2;
     JLabel L1, L2, L3;
     JTextField T1, T2, T3;

     ImageIcon img1 = new ImageIcon("escola.gif");
       
     public static void main(String args[])
     {
          JFrame Janela=new Programa03();
          Janela.setVisible(true);
          WindowListener x = new WindowAdapter()
            {
                public void windowClosing(WindowEvent e)
                  {
                     System.exit (0);
                  }
             };
          Janela.addWindowListener(x);
             }

     public Programa03()    // construtor
         {
                        
            Dimension dim1 = new Dimension(680, 430);     
                        
            getContentPane().setLayout(null);

            setTitle("Programa Nota dos Alunos");
            setResizable(false);
            setSize(dim1);
            setLocation(60,60);
            getContentPane().setBackground(Color.gray);
            setExtendedState(MAXIMIZED_BOTH);        
                                   
           // o código não termina aqui.

Só coloquei essa parte do código porque o problema deve estar aí no construtor. Se alguém consegue ver onde está pegando, e puder me ajudar, sou muito agradecido.

Luca

Ele executa o comando setExtendedState(MAXIMIZED_BOTH); antes ou depois de executar o método pack()? Por que se ele executa o pack() depois, o programa abre com o tamanho normal e desconsidera o maximizado. Voce deve executar o setExtendedState(MAXIMIZED_BOTH); depois de executar o pack().

Qualquer dúvida entre contato

Ao Ricardo Luiz,

Obrigado por tentar me ajudar, Ricardo. Eu não sei o que é esse método pack() a que você se refere, por isso não posso dizer o que ele faz primeiro,mas meu código está aí acima, é isso o que ele faz, a parte a seguir do código são outros detalhes que eu acho não tem nada há ver com o problema. Se você der uma olhada no construtor, o problema parece estar aí, não sei se é um conflito do método setSize() com o metodo que manda maximizar a janela, ??? , realmente não sei.

Obrigado por sua tentativa de ajuda, mas não sei sobre o método pack(), onde eu vejo isso?

Abraço
Luca

Assim, se você desenvolveu a interface utilizando o NetBeans, ele cria um método chamado initComponents() e no fim deste método ele faz a chamada ao método pack do JFrame.
No construtor da sua classe o NetBeans executa este método, então se você fez no NetBeans, você deve chamar o método para definir a maximização do frame após esta chamada, pois senão ele executará o pack após e não irá funcionar, porém com apenas esta parte de seu código não posso te dizer se é isto ou não.

Olá, Ricardo Luis,

Estou em uma fase muito inicial do estudo de Java, não conheço nem sei usar nenhuma IDE ainda, não sei nada de NetBeans, eu digito meu código-fonte no Bloco de Notas do Windows, então, não sei sobre esse método de que você fala. Mas tudo bem, valeu sua vontade de ajudar, Ricardo, vamos ver se mais alguém tem uma saída para o que possa estar ocorrendo. Muito obrigado, cara.

Abraço,
Luca

Luca, com a propriedade ‘setResizable()’ do frame setada para false qualquer procedimento de resize, incluindo setExtendedState, será ignorado.

E o pack() serve para ‘empacotar’ (ajustar o tamanho) a Window para seu PrefferedSize e reordenar seus subcomponentes.
E exatamente por estar aprendendo, porque vc não começa a utilizar o NetBeans? Os IDEs são uma importante mão-na-roda. Para fazer estes e outros ajustes de resize, prefferedsize, minimumsize (etc) nas Dialogs é puro ‘mamão com açucar’ :wink:

Mas sete o setResizable para true e diga ae se resolveu

Olá, Célio Marcos,

Muito obrigado por me ajudar. Isso que você falou sobre o metodo setResizable() pode ser a questão, vou checar, mas o que está estranho é que a janela não maximiza da primeira vez que eu rodo, mas sempre na segunda vez maximiza. Estranho pra caramba! Mas vou checar essa questão colocada por você.

Quanto a usar uma IDE eu vou sim, estou praticando no Bloco de Notas pra me acostumar mais com a linguagem, mas vou passar a usar uma IDE só não sei ainda qual delas, entre JCreator, Eclipse ou NetBeans, preciso saber um pouco mais de cada uma pra me decidir por apenas uma delas.

Valeu, amigo, um abraço.

Luca