Puste JTable

0

Mam taki kod:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;


public class JT extends JFrame {

	public JT()
	{
		super("Książka telefoniczna");
		
		String [] cols = {"Imię", "Nazwisko", "Ulica", "Nr domu", "Miasto", "Kod pocztowy", "E-mail", "Data urodzenia"};
		Object [][] data = {{"Dariusz", "Zet", "Kosynierów", "15", "Łódź", "94-053", "[email protected]", "08-12-1984"}};
		
		JTable tab = new JTable(data, cols);
		tab.setPreferredScrollableViewportSize(new Dimension(600, 100));
		JScrollPane pane = new JScrollPane(tab);
		add(pane, BorderLayout.NORTH);
		
		JPanel p = new JPanel();
		p.setLayout(new GridLayout(8, 2));
		p.add(new JLabel("Imię:"));
		p.add(new JTextField(15));
		p.add(new JLabel("Nazwisko:"));
		p.add(new JTextField(15));
		p.add(new JLabel("Ulica:"));
		p.add(new JTextField(15));
		p.add(new JLabel("Nr domu:"));
		p.add(new JTextField(15));
		p.add(new JLabel("Miasto:"));
		p.add(new JTextField(15));
		p.add(new JLabel("Kod pocztowy:"));
		p.add(new JTextField(15));
		p.add(new JLabel("E-mail:"));
		p.add(new JTextField(15));
		p.add(new JLabel("Data urodzenia:"));
		p.add(new JTextField(15));
		
		add(p, BorderLayout.CENTER);
		
		JPanel p2 = new JPanel();
		p2.setLayout(new FlowLayout());
		p2.add(new JButton("Dodaj"));
		p2.add(new JButton("Usuń"));
		p2.add(new JButton("Zapisz do pliku"));
		p2.add(new JButton("Odczytaj z pliku"));
		p2.add(new JButton("Zamknij"));
		
		add(p2, BorderLayout.SOUTH);
		pack();
		
		
		setVisible(true);
	}

	public static void main(String[] args) 
	{
		new JT();
	}
}

Który wygląda tak:

user image

Chciałbym jednak mieć pustą tabelę - czyli z samymi nagłówkami. Próbowałem skasować zawartość, ale wtedy się źle kompiluje. Jak to zrobić?

0
Object [][] data = {{"", "", "", "", "", "", "", ""}};

Koniecznie dodaj w konstruktorze wiersz

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
0

Dzięki, to też jest dobre, ale mi by chodziło o to, by tabelka zawierała same nazwy kolumn - bez zawartości. Da się zrobić coś takiego?

0

Da się. Ale musisz trochę przebudować program. Stwórz klasę, np. MyModel dziedziczącą po AbstractTableModel, stwórz model MyModel model=new MyModel(). tabelę twórz tak new JTable(model). W modelu przechowuj dane jako kolekcję np. o nazwie osoby (Vector, ArrayList) każda pozycja w kolekcji opisuje jedną osobę. Metoda getRowCount() z klasy
MyModel powinna zwracać osoby.getSize().

1 użytkowników online, w tym zalogowanych: 0, gości: 1