使用 Swing UI 设计器在 JTabbedPane 中创建 JTable - Intellij

问题描述

我正在尝试创建一个带有多个选项卡的框架,每个选项卡都有一个不同的列表。我使用带有 Intellij 的 Swing UI 设计器来创建“资产”,然后在我的主类文件修改它们。我已经查找了一些使用设计器创建 JTable 的示例,但这些示例不使用多个选项卡,我认为这是我现在的主要问题,因为我无法弄清楚如何去做。>

这是现在的代码

package client;

import javax.swing.*;
import javax.swing.table.TableModel;
import java.awt.event.*;

public class ATCGUI extends GUI {

    private JPanel mainPanel;
    private JTabbedPane tabbedPanel;
    private JPanel tabbedAirportInfo;

    private JScrollPane scrollPane;
    private JButton addButtonOut;
    private JButton deleteButtonOut;
    private JButton addButtonIn;
    private JButton deleteButtonIn;
    private JTable tableOut;
    private JTable tableIn;
    private JPanel panelOut;
private JScrollPane tabbedPaneOut;

    public ATCGUI(String AirportCode) {

        this.add(mainPanel);

        String airportID = getID(AirportCode);

        TableOut(airportID);

        pack();
        setVisible(true);
        setDefaultCloSEOperation(disPOSE_ON_CLOSE);
    }

    private void TableOut(String airportID){
        String[] columnNames = {"Airline","Destination","Aircraft"};

        Object[][] dataTest = {{"Iberia","London","737"},{"AirEuropa","Paris","320"},{"BritishAirways","Berlin","330"}};

        JTable TableOut = new JTable(dataTest,columnNames);

        setContentPane(panelOut);
    }
    public static void main(String[] args) {
        new ATCGUI("MAD");
    }
}

现在它显示了不同的选项卡,但 JTable 没有出现在任何选项卡中。我确实确保将 JTable 放在 JScrollPane 中。

我对此很陌生,所以也许我错过了一些东西,或者只是不知道。

解决方法

如果没有您的 JTabbedPane 代码,将很难建议您可以在自己的代码中“修复”哪些内容。

这是使用带有多个标签的 JTabbedPane 的一个很好的参考:

https://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html

JTabbedPane 可能如何用于您的数据的示例:

package whatever;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;

public class MyGui extends JFrame {

    private JTabbedPane tPane;

    MyGui(String t){
        super(t);
        this.tPane = new JTabbedPane();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        tPane.addTab("Tab 1",createTab());
        tPane.addTab("Tab 2",createTab());
        tPane.addTab("Tab 3",createTab());
        tPane.addTab("Tab 4",createTab());
        this.setContentPane(this.tPane);
        this.setSize(400,400);
        this.setVisible(true);
    }
    
    public static void main(String[] args) {
        new MyGui("My Tabbed App");
    }

    private JScrollPane createTab(){
        String[] columnNames = {"Airline","Destination","Aircraft"};
        Object[][] dataTest = {{"Iberia","London","737"},{"AirEuropa","Paris","320"},{"BritishAirways","Berlin","330"}};
        JTable tableOut = new JTable(dataTest,columnNames);
        return new JScrollPane(tableOut);
    }
}