繁体   English   中英

我可以在 JTabbedPane 中添加一个表吗?

[英]Can I add a Table inside of a JTabbedPane?

我对使用 JPanels/Tabs 很陌生,所以我的代码遇到了很多问题。 我已经从 SQL 创建了一个表,我希望能够在选项卡中查看它。 所以我首先有一个 class,其中包含一个登录名,然后将您带到一个带有三个选项卡的 window: public class UserInterface { UserInterface() {

    JFrame frame = new JFrame(); //create a frame
    frame.setTitle("Bet Worthiness"); //sets title of frame
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //system exit when user closes window
    frame.setResizable(false); //prevents user from resizing frame
    JTextField text = new JTextField(10); //creates a text box
    frame.getContentPane().setBackground(new Color(255, 243, 181)); //background colour

    //Create panels
    JPanel accountTab = new JPanel();
    JPanel bettingTab = new JPanel();
    JPanel leaderboardTab = new JPanel();

    JTabbedPane tabs = new JTabbedPane(); //Create the tab container
    tabs.setBounds(40, 20, 1400, 700); //Set tab container position


    //Account Details label
    JLabel accountLabel = new JLabel();
    accountLabel.setText("Account Details");
    accountLabel.setFont(new Font("Helvetica", Font.BOLD, 20));
    accountTab.add(accountLabel);

    //Betting label
    JLabel bettingLabel = new JLabel();
    bettingLabel.setText("Place Bets");
    bettingLabel.setFont(new Font("Helvetica", Font.BOLD, 20));
    bettingTab.add(bettingLabel);

    //Leaderboard label
    JLabel leaderboardLabel = new JLabel();
    leaderboardLabel.setText("Leaderboard");
    leaderboardLabel.setFont(new Font("Helvetica", Font.BOLD, 20));
    leaderboardTab.add(leaderboardLabel);

    //Associate each panel with the corresponding tab
    tabs.add("Account", accountTab);
    tabs.add("Betting", bettingTab);
    tabs.add("Leaderboard", leaderboardTab);

    frame.add(tabs); //Add tabs to the frame
    frame.setSize(1500, 800);
    frame.setLayout(null);
    frame.setVisible(true);

}

}

然后我在一个单独的 class 中创建了一个关于 SQL 的表,我想将其嵌入到“排行榜”选项卡中:

  public class Leaderboard extends JFrame {

public void displayLeaderboard() {

    try
    {
        String url = "jdbc:mysql://localhost:3306/bettingappdb";
        String user = "root";
        String password = "lucyb";

        Connection con = DriverManager.getConnection(url, user, password);

        String query = "SELECT * FROM users";

        Statement stm = con.createStatement();
        ResultSet res = stm.executeQuery(query);

        String columns[] = { "Username", "Success Rate" };
        String data[][] = new String[20][3];

        int i = 0;
        while (res.next()) {
            String nom = res.getString("Username");
            int successRate = res.getInt("SuccessRate");
            data[i][0] = nom;
            data[i][1] = successRate + "";
            i++;
        }

        DefaultTableModel model = new DefaultTableModel(data, columns);
        JTable table = new JTable(model);
        table.setShowGrid(true);
        table.setShowVerticalLines(true);
        JScrollPane pane = new JScrollPane(table);



        JFrame f = new JFrame("Leaderboard");
        JPanel panel = new JPanel();
        panel.add(pane);
        f.add(panel);
        f.setSize(500, 500);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);

    } catch(SQLException e) {
        e.printStackTrace();
    }
}

}

有什么办法可以将此表放在选项卡中吗? 谢谢:)

您可以将以下内容添加到您的代码中。

JPanel lbTab = new JPanel();
Leaderboard leaderboard = new Leaderboard();
lbTab.add(leaderboard);

排行榜现在位于您的 JTabbedPane 中。 如果您想在一个选项卡中添加排行榜和排行榜标签,我建议您使用 https://docs.oracle.com/javase/tutorial/uiswing/components/panel.html如何布局? (JFrame、JPanel 等)为您的第一步:)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM