Heim > Java > javaLernprogramm > Warum wird meine JTable nicht in meinem JFrame (Java) angezeigt?

Warum wird meine JTable nicht in meinem JFrame (Java) angezeigt?

Barbara Streisand
Freigeben: 2024-12-07 02:25:18
Original
594 Leute haben es durchsucht

Why Isn't My JTable Showing Up in My JFrame (Java)?

JTable wird nicht in JFrame angezeigt (Java)

Problem:

Eine JTable wird trotzdem nicht in einem JFrame angezeigt hinzugefügt wird it.

Untersuchung:

Der bereitgestellte Code versucht, die JTable mithilfe von add(tbl_Accounts) und add(scrollPane) zum JFrame hinzuzufügen. Das Problem scheint jedoch woanders zu liegen.

Ursache:

Wie in den Kommentaren erwähnt, kann die Verwendung von setLayout(null) Probleme bei der Komponentenplatzierung verursachen. Während die Tabelle zum JFrame hinzugefügt wird, wird sie aufgrund einer falschen Layoutverwaltung nicht angezeigt.

Lösung:

Um dieses Problem zu beheben, sollte ein geeigneter Layoutmanager vorhanden sein gebraucht. In diesem Beispiel kann eine Kombination aus BorderLayout und GridLayout verwendet werden.

Überarbeiteter Code:

Der folgende überarbeitete Code verwendet ein GridLayout für das Hauptpanel, ein BorderLayout für das obere Panel und ein BoxLayout für das untere Panel:

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

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;

public class JTableFrameExample {

    private JFrame frame;
    private JPanel mainPane;
    private JPanel topPane;
    private JPanel tablePane;
    private JPanel bottomPane;

    // ... (code continues as before)

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new JTableFrameExample().createAndShowGui();
            }
        });
    }

    public void createAndShowGui() {
        frame = new JFrame(getClass().getSimpleName());

        int rows = 30;
        int cols = 3;

        String[][] data = new String[rows][cols];

        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                data[i][j] = i + "-" + j;
            }
        }

        String[] columnNames = { "Column1", "Column2", "Column3" };

        table = new JTable(data, columnNames);

        scroll = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

        table.setPreferredScrollableViewportSize(new Dimension(420, 250));
        table.setFillsViewportHeight(true);

        frame.setLayout(new BorderLayout());

        topPane = new JPanel();
        topPane.setLayout(new BorderLayout());

        JLabel selectAccountLabel = new JLabel("Select Account");
        topPane.add(selectAccountLabel, BorderLayout.WEST);

        JButton selectAccountButton = new JButton("Select Account");
        topPane.add(selectAccountButton, BorderLayout.EAST);

        frame.add(topPane, BorderLayout.NORTH);

        tablePane = new JPanel();
        tablePane.add(scroll);

        frame.add(tablePane, BorderLayout.CENTER);

        bottomPane = new JPanel();
        bottomPane.setLayout(new GridLayout(0, 5, 3, 3));

        // ... (code continues as before)

        frame.add(bottomPane, BorderLayout.SOUTH);

        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
Nach dem Login kopieren

In diesem aktualisierten Code ist das BoxLayout wurde entfernt. Dadurch können die Komponenten im unteren Bereich gitterartiger angeordnet werden. Das BorderLayout im Frame wurde für die topPane- und tablePane-Komponenten verwendet, was eine einfache Platzierung dieser Elemente ermöglicht.

Mit diesen Änderungen sollte die JTable jetzt korrekt im JFrame angezeigt werden.

Das obige ist der detaillierte Inhalt vonWarum wird meine JTable nicht in meinem JFrame (Java) angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage