Tutorial JTable usando setLayout null

3 respostas
R

Pessoal pra quem costuma usar setLayout(null) aqui vai um tutorial do JTable.

A diferença é que para usar com setLayout(null) tem que usar o setBounds para dimensionar o ScrollPane e a sua posição na tela,
como está no comentário do código abaixo.

Quando usamos FlowLayout não precisa do setBounds.

Coloquei esse tutorial, porque eu sempre tentava fazer o JTable usando setLayout null e ele nunca aparecia na tela, então está aí a solução.

package teste;

import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JScrollPane;
import javax.swing.JTable;


public class ExemploJTable {

	private JFrame frame;

	/** Construtor */
	public ExemploJTable() {
		initialize();
		
	}

	/** Initialize the contents of the frame. */
	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLayout(null);
		
		myJTable(); //inicializo jTable
		
	}
	
	
	public void myJTable(){
		
		String columnNames[] = {"Nome", "Email", "Telefone"};
		Object[][] data = {
				{"Joao", "[email removido]", "8787544" },
				{"Maria", "[email removido]", "454545454"},
				{"Jose", "[email removido]", "221212121"},
		};
		
		JTable table = new JTable(data, columnNames);
		table.setPreferredScrollableViewportSize(new Dimension(300, 50));
		table.setFillsViewportHeight(true);
		
		JScrollPane scrollPane = new JScrollPane(table);
		scrollPane.setBounds(76, 86, 303, 68); //para funcinar com setLayout(null) é preciso desse setBounds
		frame.getContentPane().add(scrollPane);

	}


	/** Metodo Main	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ExemploJTable window = new ExemploJTable();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

3 Respostas

M

Please, don’t do that.

Usar Null-layout( ou Absolute Layout como outros chamam):

não é recomendavel;

não é escalavel;

não garante que seus componentes estão nos lugares certos entre diferentes SOs e nem mesmo no mesmo SO com resolução de telas diferentes.

dar manutenção é infinitamente dificil;

o código fica confuso e macarronico muito facil;
R

Marky.Vasconcelos:
Please, don’t do that.

Usar Null-layout( ou Absolute Layout como outros chamam):

não é recomendavel;

não é escalavel;

não garante que seus componentes estão nos lugares certos entre diferentes SOs e nem mesmo no mesmo SO com resolução de telas diferentes.

dar manutenção é infinitamente dificil;

o código fica confuso e macarronico muito facil;</blockquote>

Tudo bem Marky, o pessoal realmente diz que dá problema, olha fiz o todo meu sistema usando null-layout, rodei ela aqui no Linux, Mac e Windows 7, cara não mudou nada.

Ah. ! talvez seja o seguinte, é porque no meu sistema uso 800x600 e coloco setResizable(false), agora se for maximizar janelas, com certeza da problema mesmo.

Aproveitando, qual layout você usa ?

M

Basicamente, é uma mistura de varios Layouts, o principal é MigLayout, e em alguns JPanels eu uso os padrões mesmo.

Criado 26 de abril de 2011
Ultima resposta 28 de abr. de 2011
Respostas 3
Participantes 2