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, botów: 0