Posicionar os componentes JTextField e JLabel

1 resposta
D

Estou começando a desenvolver em Java e tentando montar uma tela pra usar em meus cadastros (J2SE)… com certa dificuldade cheguei ao código abaixo (ainda incompleto), mas não achei uma forma satisfatória pra colocar os componentes de Edição…
alguém tem alguma sugestão de como eu poderia dispor esses componentes no pgDados? pois quando redimensiona o frame fica tudo estranho.

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

class CadPadrao extends JFrame implements ActionListener{
    GridBagConstraints restricoes = new GridBagConstraints();
	
	//Table
	JTable gridConsulta;
	String[] colunas;
	String[][] dados;
	//Abas
	JTabbedPane tpGrupo;
	JPanel pgConsulta;
	JPanel pgFiltro;
	JPanel pgDados;
	JPanel pgRelatorio;
	//Paineis
	private JPanel pnlContemMenu;
	private JPanel pnlMenu;
	private JPanel pnlTitulo;
	private JPanel pnlDados;
	private JPanel pnlGrupo;
	private JPanel pnlStatus;
	private JLabel lbTitulo;
	
	//Botoes
	private JButton btNov;
	private JButton btAlt;
	private JButton btExc;
	private JButton btCons;
	private JButton btRel;
	private JButton btFil;
	private JButton btCon;
	private JButton btCan;
	private JButton btVol;
	private JButton btTel;
	private JButton btImp;
	private JButton btSai;
	
	//Componentes de Edicao
	private JTextField tfNome;
	private JTextField tfEndereco;
	
	public CadPadrao(){
		setTitle("Cadastro Padrão");
		setSize(600,300);
		ImageIcon icon = new ImageIcon(getClass().getResource(".\\imagens\\run.ico")); 
		setIconImage(icon.getImage()); 
		//setResizable(false);
		setLayout(new BorderLayout());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container p = getContentPane();
		
		btNov = new JButton("Novo",new ImageIcon("imagens\\novo.png"));
		btNov.addActionListener(this);
		btNov.setFocusable(false);
		btNov.setToolTipText("Novo (Ins)");
		btAlt = new JButton("Alterar",new ImageIcon("imagens\\alterar.png"));
		btAlt.addActionListener(this);
		btAlt.setFocusable(false);
		btAlt.setToolTipText("Alterar (F2)");
		btExc = new JButton("Inativar",new ImageIcon("imagens\\inativar.png"));
		btExc.addActionListener(this);
		btExc.setFocusable(false);
		btExc.setToolTipText("Inativar (Del)");
		btCons = new JButton("Consulta",new ImageIcon("imagens\\consulta.png"));
		btCons.addActionListener(this);
		btCons.setFocusable(false);
		btCons.setToolTipText("Consulta Individual (F5)");
		btRel = new JButton("Relatório",new ImageIcon("imagens\\relatorio.png"));
		btRel.addActionListener(this);
		btRel.setFocusable(false);
		btRel.setToolTipText("Relatório (F12)");
		btSai = new JButton("Fechar",new ImageIcon("imagens\\fechar.png"));
		btSai.addActionListener(this);
		btSai.setFocusable(false);
		btSai.setToolTipText("Fechar (Esc)");
		btFil = new JButton("Filtrar",new ImageIcon("imagens\\filtrar.png"));
		btFil.addActionListener(this);
		btFil.setFocusable(false);
		btFil.setToolTipText("Filtrar (F6)");
		btTel = new JButton("Tela",new ImageIcon("imagens\\tela.png"));
		btTel.addActionListener(this);
		btTel.setFocusable(false);
		btTel.setToolTipText("Tela (F11)");
		btImp = new JButton("Impressora",new ImageIcon("imagens\\impressora.png"));
		btImp.addActionListener(this);
		btImp.setFocusable(false);
		btImp.setToolTipText("Impressora (F12)");
		btVol = new JButton("Voltar",new ImageIcon("imagens\\voltar.png"));
		btVol.addActionListener(this);
		btVol.setFocusable(false);
		btVol.setToolTipText("Voltar (Esc)");
		btCon = new JButton("Confirmar",new ImageIcon("imagens\\confirmar.png"));
		btCon.addActionListener(this);
		btCon.setFocusable(false);
		btCon.setToolTipText("Confirmar (F11)");
		btCan = new JButton("Cancelar ",new ImageIcon("imagens\\cancelar.png"));
		btCan.addActionListener(this);
		btCan.setFocusable(false);
		btCan.setToolTipText("Cancelar (Esc)");
		
		pnlMenu = new JPanel();
		pnlMenu.setLayout(new GridBagLayout());
		restricoes.fill = GridBagConstraints.BOTH;
		restricoes.ipady = 6;//altura minima do botao
		//restricoes.ipadx = 200;//largura minima do botao
		addGridBag(btNov, 0, 0);
		addGridBag(btAlt, 0, 1);
		addGridBag(btExc, 0, 2);
		addGridBag(btCons, 0, 3);
		addGridBag(btFil, 0, 4);
		addGridBag(btRel, 0, 6);
		addGridBag(btSai, 0, 7);		
		addGridBag(btCon, 0, 8);
		addGridBag(btCan, 0, 9);
		addGridBag(btVol, 0, 10);
		addGridBag(btTel, 0, 11);
		addGridBag(btImp, 0, 12);
			
		pnlContemMenu = new JPanel();
		pnlContemMenu.setBorder(BorderFactory.createEtchedBorder());
		pnlContemMenu.add(pnlMenu,BorderLayout.NORTH);
		p.add(pnlContemMenu,BorderLayout.WEST);	
			
		tpGrupo = new JTabbedPane(JTabbedPane.BOTTOM);
		pgConsulta = new JPanel();
		pgConsulta.setBorder(BorderFactory.createEtchedBorder());
		pgConsulta.setLayout(new GridLayout(1, 0));
		
 		colunas = new String[]{"Código","Nome","Endereço"};
 		dados = new String[][]{
 			{"","",""}
 		};
		DefaultTableModel modelo = new DefaultTableModel(dados, colunas);
 		gridConsulta = new JTable(modelo);
 		gridConsulta.getColumnModel().getColumn(1).setPreferredWidth(250);
 		gridConsulta.getColumnModel().getColumn(2).setPreferredWidth(300);
 		gridConsulta.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
 		
 		JScrollPane pnlTemp = new JScrollPane();
 		pnlTemp.setViewportView(gridConsulta);
 		pgConsulta.add(pnlTemp);
		
		pgFiltro = new JPanel();
		pgFiltro.add(new JLabel("Pagina de Filtro"));
		
		pgDados = new JPanel();
		//pgDados.setLayout(new GridLayout(1, 0));
		pgDados.setLayout(new FlowLayout(FlowLayout.LEFT));

		//JScrollPane pgDados1 = new JScrollPane();
		//JPanel pgDados2 = new JPanel();
		pgDados.add(new JLabel("Nome"));
		tfNome = new JTextField(40);
		pgDados.add(tfNome);
		pgDados.add(new JLabel("Endereço"));
		tfEndereco = new JTextField(50);
		pgDados.add(tfEndereco);
		pgDados.add(new JLabel("Telefone"));
		JTextField tfFone = new JTextField(18);
		pgDados.add(tfFone);
		//pgDados1.setViewportView(pgDados2);
		//pgDados.add(pgDados2);		
		
		pgRelatorio = new JPanel();
		pgRelatorio.add(new JLabel("Pagina de Relatorio"));
		
		tpGrupo.addTab("Consulta",pgConsulta);
		tpGrupo.setFocusable(false);
			
		pnlGrupo = new JPanel();
		pnlGrupo.setBorder(BorderFactory.createEtchedBorder());
		pnlGrupo.setLayout(new BorderLayout());
		p.add(pnlGrupo,BorderLayout.CENTER);
		
		pnlTitulo = new JPanel();
		pnlTitulo.setBorder(BorderFactory.createEtchedBorder(BevelBorder.RAISED));
		lbTitulo = new JLabel("Consultando Dados");
		pnlTitulo.add(lbTitulo);
		pnlGrupo.add(pnlTitulo,BorderLayout.NORTH);
		
		pnlStatus = new JPanel();
		pnlStatus.setBorder(BorderFactory.createEtchedBorder(BevelBorder.RAISED));
		pnlStatus.add(new JLabel("Barra de Status"));
		p.add(pnlStatus,BorderLayout.SOUTH);			
		
		pnlDados = new JPanel();
		pnlDados.setLayout(new BorderLayout());
		pnlDados.setBorder(BorderFactory.createEtchedBorder());
		pnlDados.add(tpGrupo,BorderLayout.CENTER);
		pnlGrupo.add(pnlDados,BorderLayout.CENTER);

		//inicializa a tela
		montaTela("N");
	}
	
    void addGridBag(Component objeto, int x, int y){
    	restricoes.gridx = x;
    	restricoes.gridy = y;
    	pnlMenu.add(objeto, restricoes);
    }
    
    void montaTela(String acao){
    	if ((acao.equals("I"))||(acao.equals("A"))||(acao.equals("X"))||(acao.equals("R")||(acao.equals("F")))){
			btNov.setVisible(false);
			btAlt.setVisible(false);
			btExc.setVisible(false);
			btCons.setVisible(false);
			btFil.setVisible(false);
			btRel.setVisible(false);
			btSai.setVisible(false);
			btVol.setVisible(false);
			btTel.setVisible(false);
			btImp.setVisible(false);
			if (acao.equals("I"))
				lbTitulo.setText("Inclusão");
			if (acao.equals("A"))
				lbTitulo.setText("Alteração");				
			if ((acao.equals("I"))||(acao.equals("A"))||(acao.equals("F"))){
	    		btCon.setVisible(true);
    			btCan.setVisible(true);
			}
			if ((acao.equals("X"))||acao.equals("R")){
	    		btVol.setVisible(true);
			}
			if (acao.equals("I")||(acao.equals("A"))||(acao.equals("X"))){
				tpGrupo.remove(pgConsulta);
				tpGrupo.addTab("Dados",pgDados);
			}
			if (acao.equals("F")){
				lbTitulo.setText("Filtrar");
				tpGrupo.remove(pgConsulta);
				tpGrupo.addTab("Filtro",pgFiltro);
			}
			if (acao.equals("R")){
				btTel.setVisible(true);
				btImp.setVisible(true);

				lbTitulo.setText("Relatório");
				tpGrupo.remove(pgConsulta);
				tpGrupo.addTab("Relatório",pgRelatorio);
			}
    	}
    	
    	if ((acao.equals("C"))||(acao.equals("N"))||(acao.equals("V"))){
			btNov.setVisible(true);
			btAlt.setVisible(true);
			btExc.setVisible(true);
			btCons.setVisible(true);
			btFil.setVisible(true);
			btRel.setVisible(true);
			btSai.setVisible(true);
			btVol.setVisible(false);
			btTel.setVisible(false);
			btImp.setVisible(false);
    		btCon.setVisible(false);
    		btCan.setVisible(false);
    		
    		lbTitulo.setText("Consultando Dados");
			tpGrupo.remove(pgRelatorio);
			tpGrupo.remove(pgFiltro);
			tpGrupo.remove(pgDados);
			tpGrupo.addTab("Consulta",pgConsulta);
    	}
    }
      
    public void actionPerformed(ActionEvent evt){
    	Object origem = evt.getSource();
    	if (origem == btNov){
    		montaTela("I");
    	}
    	if (origem == btAlt){
    		montaTela("A");
    	}
    	if (origem == btExc){
    		montaTela("E");
    	}
    	if (origem == btCons){
    		montaTela("X");
    	}
    	if (origem == btFil){
    		montaTela("F");
    	}
    	if (origem == btRel){
    		montaTela("R");
    	}    	    	
    	if (origem == btTel){
    		
    	}
    	if (origem == btImp){
    		
    	}    	    		
    	if (origem == btVol){
    		montaTela("V");
    	}    		    	    	
    	if (origem == btCon){
    		montaTela("C");
    	}
    	if (origem == btCan){
    		montaTela("N");
    	}    	
    	if (origem == btSai){
    		System.exit(0);
    	}
    }
	
	public static void main(String args[]){
		CadPadrao form = new CadPadrao();
		form.setVisible(true);
	}
}

1 Resposta

raci0nal

Amigo, também sofri um pouco para montar telas Swing no Java.
Um dia conheci o MigLayout e tudo ficou muito mais simples. Dê uma olhada em:
http://www.miglayout.com
Vale a pena ler o Quick Start e testar.
Abraços,

Marcos Antonio Campos Jordão’’

Criado 12 de junho de 2009
Ultima resposta 13 de jun. de 2009
Respostas 1
Participantes 2