Execultar swing

11 respostas
R

pessoal, estou com uma duvida, porque depois q eu monto o design do meu programa em java ele n compila? Quando eu colocava o botoes e as caixas no c ele compilava normal... porque isso não acontece no java? estou fazendo algo errado? Fiz um form bem simples e o eclipse n compilo (n editei nada) como devo proceder?

import java.awt.EventQueue;


public class Instalar extends JInternalFrame {

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Instalar frame = new Instalar();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Instalar() {
		setBounds(100, 100, 450, 300);
		
		JLabel lblBemVindoA = new JLabel("Bem Vindo a instalação do servidor proxy");
		lblBemVindoA.setFont(new Font("Dialog", Font.BOLD, 16));
		
		JLabel lblDesejaInstalarO = new JLabel("Deseja instalar o servidor?");
		
		JButton btnSim = new JButton("Sim");
		btnSim.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
			
			}
		});
		
		JButton btnNo = new JButton("Não");
		GroupLayout groupLayout = new GroupLayout(getContentPane());
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING, false)
						.addGroup(groupLayout.createSequentialGroup()
							.addGap(37)
							.addComponent(lblBemVindoA))
						.addGroup(groupLayout.createSequentialGroup()
							.addGap(125)
							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING, false)
								.addGroup(groupLayout.createSequentialGroup()
									.addComponent(btnSim)
									.addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
									.addComponent(btnNo))
								.addComponent(lblDesejaInstalarO))))
					.addContainerGap(36, Short.MAX_VALUE))
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap()
					.addComponent(lblBemVindoA)
					.addGap(72)
					.addComponent(lblDesejaInstalarO)
					.addPreferredGap(ComponentPlacement.RELATED, 80, Short.MAX_VALUE)
					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
						.addComponent(btnSim)
						.addComponent(btnNo))
					.addGap(45))
		);
		getContentPane().setLayout(groupLayout);

	}

}

11 Respostas

M

O que você esta usando para montar o swing?

Coloque o codigo entre “code” e “/code”;

R

to usando o windowbuilder

M

Um código totalmente confuso, ainda mais pra quem está iniciando com Java…

Por isso não uso Plugin…

E

mariogpr:

Um código totalmente confuso, ainda mais pra quem está iniciando com Java…

Por isso não uso Plugin…

Não é que o código seja confuso. É que ele está usando o layout “java.swing.layout.GroupLayout”, que exige essa montanha de código para funcionar. Se ele usasse o MigLayout (que é uma das opções do WindowBuilder) não apareceria nem 10% desse código todo :frowning:

E
package guj;

import java.awt.EventQueue;
import java.awt.Font;

import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;

import net.miginfocom.swing.MigLayout;


public class Instalar extends JInternalFrame {
    private JLabel lblNewLabel;  
    private JLabel lblDesejaInstalarO;
    private JButton btnSim;
    private JButton btnNo;
  
    /** 
     * Launch the application. 
     */  
    public static void main(String[] args) {  
        EventQueue.invokeLater(new Runnable() {  
            public void run() {  
                try {  
                    Instalar frame = new Instalar();  
                    frame.setVisible(true);  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        });  
    }  
  
    /** 
     * Create the frame. 
     */  
    public Instalar() {  
        setBounds(100, 100, 450, 175);
        getContentPane().setLayout(new MigLayout("", "[grow]", "[][][][][]"));
        getContentPane().add(getLblNewLabel(), "cell 0 0,alignx center");
        getContentPane().add(getLblDesejaInstalarO(), "cell 0 2,alignx center");
        getContentPane().add(getBtnSim(), "flowx,cell 0 4,alignx center");
        getContentPane().add(getBtnNo(), "cell 0 4");
  
    }  
  
    private JLabel getLblNewLabel() {
        if (lblNewLabel == null) {
        	lblNewLabel = new JLabel("Bem-vindo \u00E0 instala\u00E7\u00E3o do servidor de proxy");
        	lblNewLabel.setFont(new Font("SansSerif", Font.PLAIN, 20));
        }
        return lblNewLabel;
    }
    private JLabel getLblDesejaInstalarO() {
        if (lblDesejaInstalarO == null) {
        	lblDesejaInstalarO = new JLabel("Deseja instalar o servidor?");
        }
        return lblDesejaInstalarO;
    }
    private JButton getBtnSim() {
        if (btnSim == null) {
        	btnSim = new JButton("Sim");
        }
        return btnSim;
    }
    private JButton getBtnNo() {
        if (btnNo == null) {
        	btnNo = new JButton("N\u00E3o");
        }
        return btnNo;
    }
}




E

Não gosto do GroupLayout pela simples razão que é sempre um parto centralizar qualquer coisa (você acaba sendo obrigado a criar um JPanel auxiliar para usar um outro layout para centralizar as coisas que você quer).

Vejam também que o GroupLayout acaba obrigando você a desenhar umas telas muito feias (a segunda tela é a tela original, que não estava funcionando segundo o nosso colega). Quando você redimensiona a tela, a menos que você tenha tomado muito cuidado para clicar nos lugares certos com o GroupLayout, acaba ficando tudo desarrumado.

R

amigo, quando você usou o miglayout para fazer esta tela ele compilou normal? ou vc pedio para visualizar no modo design? Obrigado pela ajuda…

E

Você criou um JInternalFrame, e ele não sobrevive sozinho. Ele precisa de um JDesktopPane que deve estar dentro de um JFrame. Por acaso você fez essas duas coisas?
E de qualquer form, o MigLayout exige um JAR separado para poder rodar. Ao rodar um programa que usa MigLayout, você precisa incluir o jar do MigLayout no CLASSPATH do seu programa (usualmente opção -classpath).

R

peguei os codigos que você fez e tentei compilar… mais deus alguns erros…


E

Quanto ao primeiro erro - você deve saber o que é um pacote no Java,. não?

O segundo erro: você precisa referenciar o jar do MigLayout no projeto. A forma mais fácil é você criar um novo JFrame no seu projeto no Eclipse usando o WindowBuilder, e então setar o layout desse JFrame como MigLayout. Uma vez fazendo isso, você pode até matar esse JFrame vazio que tem no seu projeto do Eclipse que esse jar deve ficar corretamente referenciado.

Fellipex

Não digo que o GroupLayout seja ruim, mas com certeza leva um certo tempo para entender como funciona, ou seja ele é um pouco mais complexo, mas é sempre bom saber um pouco de cada ferramenta para
saber o momento para escolher cada uma.

Criado 18 de setembro de 2012
Ultima resposta 19 de set. de 2012
Respostas 11
Participantes 4