Tutorial JTable usando setLayout null

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", "joao@gmail.com", "8787544" },
				{"Maria", "maria@gmail.com", "454545454"},
				{"Jose", "jose@gmail.com", "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();
				}
			}
		});
	}

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;

[quote=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;[/quote]

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 ?

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