Rumah > Java > javaTutorial > Mengapa JTable Saya Tidak Dipaparkan dalam JFrame Saya (Java)?

Mengapa JTable Saya Tidak Dipaparkan dalam JFrame Saya (Java)?

Barbara Streisand
Lepaskan: 2024-12-07 02:25:18
asal
594 orang telah melayarinya

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

JTable Not Displaying in JFrame (Java)

Masalah:

JTable tidak muncul dalam JFrame, walaupun ditambah kepada ia.

Penyiasatan:

Kod yang disediakan cuba untuk menambah JTable pada JFrame menggunakan add(tbl_Accounts) dan add(scrollPane). Walau bagaimanapun, masalahnya nampaknya terletak di tempat lain.

Punca Punca:

Seperti yang dinyatakan dalam ulasan, penggunaan setLayout(null) boleh menyebabkan masalah dengan peletakan komponen. Semasa jadual ditambahkan pada JFrame, ia tidak ditunjukkan kerana pengurusan susun atur yang salah.

Penyelesaian:

Untuk menyelesaikan masalah ini, pengurus susun atur yang betul hendaklah digunakan. Dalam contoh ini, gabungan BorderLayout dan GridLayout boleh digunakan.

Kod Semakan:

Kod yang disemak berikut menggunakan GridLayout untuk panel utama, BorderLayout untuk panel atas dan BoxLayout untuk panel bawah:

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);
    }
}
Salin selepas log masuk

Dalam kod yang dikemas kini ini, BoxLayout telah dialih keluar. Ini membolehkan komponen dalam bottomPane disusun dalam cara yang lebih seperti grid. BorderLayout dalam bingkai telah digunakan untuk komponen topPane dan tablePane, membenarkan peletakan elemen ini dengan mudah.

Dengan perubahan ini, JTable kini sepatutnya dipaparkan dengan betul dalam JFrame.

Atas ialah kandungan terperinci Mengapa JTable Saya Tidak Dipaparkan dalam JFrame Saya (Java)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan