Netbeans e Java - dor de cabeça. [RESOLVIDO]

31 respostas
H

Eu realmente não estou aguentando mais… Estou para explodir.Eu usava o sistema Gentoo, desde de lá, o Netbeans já veio apresentar problemas para mim, como por exemplo, falta de acentuação, e sua interface não está normal; padrão do Java. Então, dessa forma, eu fui para o maldito Ubuntu, que por sinal é uma porcaria de Linux! Esse gnome então, nem se fala! E o problema simplesmente continua! Preciso desenvolver um software, mas nunca dá, cada hora é um problema que vem. A interface está totalmente esquisita, não está o normal do Java. Agora, não quer executar o programa. Alguém, por favor, poderia citar aqui, um bom sistema Linux para desenvolver Java ? Ou uma boa IDE ? Preciso desenvolver um software. Por favor, me dêem dicas de IDE, SO, etc.

Eu queria usar o Eclipse, mas o problema é que no Eclipse, eu não consigo utilizar o Pallete de swing. Lá, eu tenho que criar tudo na mão. Eu até crio, mas o problema é posicionar o menu, botão, textos, etc. :frowning:
Veja, não executa:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package estoque;

/**
 *
 * @author system
 */
public class Inicial extends javax.swing.JPanel {

    /**
     * Creates new form Inicial
     */
    public Inicial() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();

        jLabel1.setFont(new java.awt.Font("Ubuntu", 0, 24)); // NOI18N
        jLabel1.setText("Bem vindo(a)!");

        jButton1.setText("jButton1");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(32, 32, 32)
                .addComponent(jLabel1)
                .addContainerGap(253, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(63, 63, 63))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(25, 25, 25)
                .addComponent(jLabel1)
                .addGap(41, 41, 41)
                .addComponent(jButton1)
                .addContainerGap(175, Short.MAX_VALUE))
        );
    }// </editor-fold>
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package estoque;

/**
 *
 * @author system
 */
public class Start {
    
    public static void main(String args[])
    {
        
        
         new Inicial().setVisible(true);
        
    }
    
}

31 Respostas

D

Force o NetBeans a rodar usando algum LAF “nativo” do Java, como o Metal ou o Nimbus.
Eu já tive muuitos problemas com a interface do NetBeans no Gnome tbm.
Veja o seu outro post sobre como fazer isso: http://www.guj.com.br/java/263681-interface-grafica-do-java-totalmente-diferente

[]'s

H

Olá! Grato por responder!
Afinal, você utiliza qual sistema ? Qual seria recomendado para programar Java ? Eu sei que isso é relativo, mas… Quero um sistema que se adpta bem ao Java.
Obrigado, o comando que você passou funcionou perfeitamente. Agora, por que, o meu programa não executa ? ;s

Quando abro uma nova JFrame, as vezes o Netbeans gera isso:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package estoque;

/**
 *
 * @author system
 */
public class NewJFrame extends javax.swing.JFrame {

    /**
     * Creates new form NewJFrame
     */
    public NewJFrame() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the form
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    // End of variables declaration
}

Sendo que da outra vez ele não gerou… Sinceramente, isso está bugado ,não é possível…
Agora, pq o meu programa anterior não executa ?

D

Atualmente uso Windows 7.
Não tenho mais paciência para usar Linux como plataforma de trabalho.
Só uso Linux em servidores.

Vou ver seu código, já posto.

H

Poxa, usar Windows para ficar formatando a cada 2 meses é lamentável… Mas, o Windows 7 é melhor para programar Java ?
Veja o código do primeiro post, que não executa.

D

Oloko, o que você faz para precisar formatar a cada 2 meses?
Se você gerenciar o SO direitinho, manter um bom antivírus atualizado e o SO atualizado, não tem problema nenhum.
Estou com uma instalação do W7 ativa desde maio de 2011 no notebook que comprei e ainda não tive sequer um probleminha.
Agora, se você é do tipo de pessoa que instala e desinstala todo tipo de porcaria, fica rodando “limpadores” como o ccleaner o tempo todo, não atualiza o SO, usa algum antivirus meia boca, ai concordo com você, seu Windows vai para o saco rapidinho.

Vou ver seu código.

D

Hehehe o seu erro é bem bobinho.
Meus alunos fazem isso o tempo todo quando entro na parte de interface gráfica em Java.
Veja a linha 11. Qual classe está sendo herdada? Matou a charada?
No NetBeans, quando vai criar a janela, você está errando na hora de escolher que tipo de componente quer criar.

[]'s

H

Utilizo Linux à anos. Sinceramente, seria algo lamentável eu migrar para o Windows. Eu nem consigo fazer isso.

D

Então, gosto é gosto não é mesmo? Ficar brigando por causa de SO, IDE, religião, etc. é perda de tempo e sinal de imaturidade (não estou falando q vc é imaturo).
Viu qual foi o seu erro?

H

Isso é verdade. Bom, eu vi o erro sim, mas eu errei porcausa do maldito Netbeans, que cria código todo confuso. Se eu criasse na mão seria muito mais tranquilo.
Agora, não consigui compreender o erro. Poderia me passar a solução do erro ? Só assim consigo entender. Oo

D

Na hora de criar o formulário, você escolheu JPanel ao invés de JFrame.
Para resolver, crie um formulário do tipo JFrame, abra o formulário do JPanel, selecione todos os componentes, copie, vá no JFrame e cole.

Coloque uma coisa na cabeça. Código gerado, seja ele qual for, não deve ser entendido. Ele é gerado, então você não precisa se preocupar com ele. O GroupLayout (JDK 6 e superiores) usado por padrão no Matisse é um gerenciador de layout feito para ser usado através de geração e não manualmente. Código gerado vai ser “bagunçado” (aka difícil de ler) em qualquer IDE. Quem tem que gerenciar esse código é a ferramenta, não você. Quando você precisa ter um controle mais fino sobre a geração, basta ir na aba Code (Código) do NetBeans (fica junto com a aba Properties (Propriedades) dos componentes e então fazer as configurações específicas que precisar.

[]'s

R

hoje prefiro fazer tudo manualmente, é até melhor para posicionar as coisas.
com o comando setLocation. este automático do netbeans, é bom, mas chega uma hora que a pessoa perde o controle. E tem que cuidar para a biblioteca estar adicionada e não se perder, se não o jar não vai rodar.

Tenho linux e windows, uso windows, 98 por cento e o netbeans, toda hora.

antigamente me irritava pois as vezes travava mesmo, aí preferia IDE menores como jcreator ou jedir, coisa assim,e parece que funcionava melhor e mais rápido mesmo. o netbeans deve fazer muitos cálculos para a coisa funcionar e acaba demorando. o ubuntu, dá opções de escolha, não apareceu nenhuma lá?

senão no windows, dá para escolher uma IDE mais leve, pode facilitar.

mas se o erro for por causa do JPanel, da linha 11, aí nem no bloco de notas, funcionará…

:slight_smile:

H

Mas, JPanel, não é apenas um painel ? Então pq o netbeans criou um JFrame ?

Afinal, qual a diferença entre os dois no Netbeans ?
Pois é, por isso prefiro programar na mão, mas o problema, como eu disse, ter que posicionar cada um, é complicado. Mas, e os programadores de grandes software ? Eles cria tudo na mão ?

D

raghy:
hoje prefiro fazer tudo manualmente, é até melhor para posicionar as coisas.
com o comando setLocation. este automático do netbeans, é bom, mas chega uma hora que a pessoa perde o controle. E tem que cuidar para a biblioteca estar adicionada e não se perder, se não o jar não vai rodar.

Tenho linux e windows, uso windows, 98 por cento e o netbeans, toda hora.

antigamente me irritava pois as vezes travava mesmo, aí preferia IDE menores como jcreator ou jedir, coisa assim,e parece que funcionava melhor e mais rápido mesmo. o netbeans deve fazer muitos cálculos para a coisa funcionar e acaba demorando. o ubuntu, dá opções de escolha, não apareceu nenhuma lá?

senão no windows, dá para escolher uma IDE mais leve, pode facilitar.

mas se o erro for por causa do JPanel, da linha 11, aí nem no bloco de notas, funcionará…

:slight_smile:

Cuidado. Usar NullLayout ou AbsolutLayout é desencorajado. O ideal é você deixar que o gerenciador configure a tela para você. O segredo para trabalhar com o Matisse (editor Swing WYSIWYG do NetBeans) é aprender a trabalhar com as âncoras que ele usa, além de usar painéis para separa os componentes.

D

hackum:
Mas, JPanel, não é apenas um painel ? Então pq o netbeans criou um JFrame ?

Afinal, qual a diferença entre os dois no Netbeans ?
Pois é, por isso prefiro programar na mão, mas o problema, como eu disse, ter que posicionar cada um, é complicado. Mas, e os programadores de grandes software ? Eles cria tudo na mão ?

JPanel é um painel. JFrame é uma janela.
JPanel é um container de componentes, usado para criar separações de vários componentes. Um JPanel NUNCA vai ser uma janela. Você pode inserir JPanels em um JFrame e então exibir o Frame, que é a janela.
Recomendo que você dê uma estudada no Swing. Saber diferenciar um painel de um frame é algo bem básico e essencial para quem trabalha com Swing.

[]'s

H

Eu entendo a questão do JPanel e JFrame. Mas, a questão é que o Netbeans que está me confudindo. Eu crio um JFrame e consigo posicionar os elementos sem o JPanel. Eu apenos crio o JFrame.

D

Você que está se confundindo.
Na hora de criar o seu formulário, ao invés de escolher JFrame, vc escolheu JPanel.
Ai você instancia um JPanel e dá um setVisible nele, como se estivesse trabalhando com o JFrame. Isso não funciona, afinal, um JPanel não é uma janela.
Você errou na hora da criação, foi isso que aconteceu. Entendeu?

H

Sim. Foi distração minha. Eu achei que estava criando o JFrame. Então, para encerrar, eu não preciso criar o JPanel, porque, estou criando o JFrame, e eu consigo posicionar os elementos. Correto ? Isso no netbeans, se fosse na mão eu teria que ter o JPanel para posicionar.

D

Isso. Mas nada impede que você arraste JPanels (da paleta) dentro do JFrame para ajudar a organizar seus outros componentes. Isso é até recomendável como falei em uma das postagens anteriores.

[]'s

H

Sim, como por exemplo, colocar background.
Bom, no mais é isso. Eu agradeço de coração por dedicar esse tempo para tirar as dúvidas dos usuários aqui do fórum. Fico feliz por existir pessoas assim como você e dentre vários outros aqui, que tem a boa vontade de ensinar.

Muito obrigado. Assunto encerrado. Um grande abraço!

R

sobre alterar este código que o netbeans gera é possível sim.

mas vc tem que copiar o arquivo, com control x ou copiar,
e faça uma classe nova com o mesmo nome,

quando vc colocar, ou colar, o initcomponents, estará editável e vc pode mexer a vontade…

vivendo e aprendendo.

quando tentei fazer coisas e não foram possíveis neste layout automático, passei a tentar fazer na digitação e hoje prefiro, pois posiciono onde quero e tenho controle de onde as coisas estão, sei que se eu colocar outra, não vou estragar todo o trabalho anterior, o que as vezes acontece, nesta coisa de arrastar ‘coisas novas’ para a tela…
mas cada um,cada um.

e lhe dei a opção de IDE s mais leves também, mas acho que não é a questão, como já vimos. o JCreator é muito bom, mas tem menos recursos, como não importa algo automaticamente. vc tem que saber o que vai importar ou não vai funcionar… por exemplo. não avisa os erros durante a digitação sem compilar por exemplo, etc. mas é mais leve…

H

Olá, raghy!
É verdade, esse método realmente funciona. Há várias IDEs aí no mercado, mas mesmo com os problemas que o Netbeans apresenta. Eu ainda prefiro ele e o Eclipse, o mau do Eclipse é a falta de Palleta.
Temos a IDE IntelliJ também. Nunca testei.

Abraços!

C

davidbuzatto:

Cuidado. Usar NullLayout ou AbsolutLayout é desencorajado. O ideal é você deixar que o gerenciador configure a tela para você. O segredo para trabalhar com o Matisse (editor Swing WYSIWYG do NetBeans) é aprender a trabalhar com as âncoras que ele usa, além de usar painéis para separa os componentes.

Usava NullLayout ha muito tempo e achava que estava abalando, controle total posicionando os componentes com as coordenadas. Até que um dia foi indispensavel pra um projeto tornar a tela redimensionavel. Só que como eram muitos redimensionamentos era inviável faze-los manualmente. Desde entao nunca mais usei Layout nulo ou absoluto.

R

opa . ok. bacana. fui ver o link

não sei se tú consegue me ajudar aqui…
http://www.guj.com.br/java/263772-por-som-em-arquivos-que-estejam-acoplados-ao-projeto-ou-seja-ao-jar-final

e to com outros posts em vigor aí, como jogos meus, e etc…
http://www.guj.com.br/java/263687-jogo-de-forca-e-associar-pasta-lib-ao-jar-----#1379751

http://www.guj.com.br/java/46375-classificacao-dos-usuarios-do-guj/4#1379777

valeu.

R

carlos.e.a:
davidbuzatto:

Cuidado. Usar NullLayout ou AbsolutLayout é desencorajado. O ideal é você deixar que o gerenciador configure a tela para você. O segredo para trabalhar com o Matisse (editor Swing WYSIWYG do NetBeans) é aprender a trabalhar com as âncoras que ele usa, além de usar painéis para separa os componentes.

Usava NullLayout ha muito tempo e achava que estava abalando, controle total posicionando os componentes com as coordenadas. Até que um dia foi indispensavel pra um projeto tornar a tela redimensionavel. Só que como eram muitos redimensionamentos era inviável faze-los manualmente. Desde entao nunca mais usei Layout nulo ou absoluto.

se entendi, vc usava o setLocation, na ‘mão’ , e isto? e isto deu problema? a tela redimensiona, mas os componentes ficam do mesmo tamanho, qual é o problema que surgiu? de fato não ‘captei’… :frowning: :roll: :lol: :shock:

C

Esse é o problema. Os componentes continuam do mesmo tamanho. Eu precisava que eles aumentassem pois era uma tabela que ia crescendo…Sem contar que redimensionar e as coisas continuarem do mesmo tamanho é melhor desativar logo o redimensionamento, fica muito feito.

R

olha eu não lembro de ter visto redimensionamento em que os componentes ou ‘objetos da tela’ enfim, também aumentam de tamanho…

de fato eles se agrupam ou se reorganizam de outra forma, mas aumentar de tamanho, não estou lembrado de ter visto. tens algum exemplo aí?
falando em layout, vc usa algum layout pronto do java, qual. de qualquer forma, ele só organiza os ‘ingredientes’ de uma forma ou outra, nao lembro de ter visto mudar de tamanho, como já disse…

R

ao redimensionar, pode a tabela ficar mais visível quem sabe, mas ela ficará do tamanho que foi criada, é o que conheço. é mas de fato não. agora estou testando aqui um jar que tenho vou lhe mandar. mas no null, não seria igual. enfim fiquei confuso.

C

Entao, na verdade os gerenciadores que nao o Null e o absolute servem mais pra isso mesmo. Redimensionamento. Por exemplo, nesse meu projeto eu tinha uma tabela com váaaarias colunas. Só que eu escondia algumas delas. Se o usuario quisesse vê-las ele ia habilitando-as. Ao colocar um gerenciador de layout eu simplesmente adicionava a coluna ta tabela e redimensionava o painel. O gerenciador se encarregava de deixar tudo do tamanho certinho com todas as colunas visiveis.

Tenta setar um outro tamanho pra um painel que tem layout nulo onde voce tem varios outros paineis dentro. Vai ficar simplesmente ridiculo.

R

agora não sei se o setLocation funciona dentro destes gerenciadores de layout. talvez sim, aí pode ser interessante.

porque de fato, com os gerenciadores, as vezes as coisas ainda não ficam bem onde queremos, porque existem regras ali, implicitas. por isso mandei o jar , do poker. … ele foi feito com gerenciador de layout, aquele de norte sul, leste, oeste…

mas as coisas ao meu ver podiam ter ficado um pouco diferentes. mas de fato no redimensionamento o tamanho dos componentes muda de uma forma bacana.

mas em um sistema desktop por exemplo, geralmente a tela já aparece no tamanho certo.

ou nos meus jogos, já posso abrir no tamanho certo e para nada preciso do redimensionamento , enfim…

cabem os testes. para cada caso tb. :smiley:

C

Pra evitar qualquer tipo de problema futuro onde seja preciso redimensionar e eu tenha que refazer o layout novamente usando um gerenciador eu inicio logo utilizando um. Basta aprender como funcionam os principais. Enfim, eu nao aconselho usar o nulo ou o absoluto.

O setLocation nao funciona corretamente em gerenciadores. A nao ser no absoluto. Dependendo do gerenciador voce consegue algo muito parecido com o setLocation.

J

Problemas de acentuação é pode ser codificação…sempre usei ubuntu…no inicio tive alguns problemas com acentuação. Depois que mudei a codificação dos arquivos passou a funcionar…no proprio netbeans tem a configuração…

Criado 25 de janeiro de 2012
Ultima resposta 26 de jan. de 2012
Respostas 31
Participantes 5