gpt4 book ai didi

java - JTabbedPane 与 GridBagLayout

转载 作者:行者123 更新时间:2023-12-01 23:58:55 24 4
gpt4 key购买 nike

我理解了 JTabbedPane 和 GridBagLayout 背后的概念。然而,当我尝试同时使用两者时,我失败了。也就是说,当我使用 GBLayout 时,我的其他选项卡(每个选项卡具有不同的功能)不会显示。请帮忙。谢谢。

这是我的代码:

    import java.awt.*;
import javax.swing.*;

public class Tryout extends JFrame {

private static final long serialVersionUID = 1L;
private JTabbedPane tabbedPane;
private JPanel panel1;
private JPanel breakfast;

public Tryout()
{
JPanel topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
getContentPane().add( topPanel );

createPage1(); //Tab1
createPage2(); //Tab2

tabbedPane = new JTabbedPane();
tabbedPane.addTab( "Input Form", panel1 );
tabbedPane.addTab( "Breakfast", breakfast );
topPanel.add( tabbedPane, BorderLayout.CENTER );
}

public void createPage1()
{
/* Works fine when I un-comment this
panel1 = new JPanel();
panel1.setLayout(new BorderLayout());
panel1.add(new JLabel("Hi"), BorderLayout.NORTH);
*/
//Tabs not getting displayed if I add the code below with GBLayout
JPanel panel = new JPanel(new GridBagLayout());
this.getContentPane().add(panel);

JLabel label = new JLabel("Form");

JPanel tableButtonPanel = new JPanel();
tableButtonPanel.add(new JButton("Add Thing"));
tableButtonPanel.add(new JRadioButton("Delete Thing"));
tableButtonPanel.add(new JButton("Modify Thing"));

GridBagConstraints gbc = new GridBagConstraints();

gbc.gridx = 0;
gbc.gridy = 0;
panel.add(label, gbc);

gbc.gridx = 0;
gbc.gridy = 2;
panel.add(tableButtonPanel, gbc);

}

public void createPage2()
{
breakfast = new JPanel();
breakfast.setLayout( new BorderLayout() );
breakfast.add( new JButton( "North" ), BorderLayout.NORTH );
breakfast.add( new JButton( "South" ), BorderLayout.SOUTH );
breakfast.add( new JButton( "East" ), BorderLayout.EAST );
breakfast.add( new JButton( "West" ), BorderLayout.WEST );
breakfast.add( new JButton( "Center" ), BorderLayout.CENTER );
}

public static void main(String args[]) {

Tryout ex = new Tryout();
ex.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ex.setSize(750,750);
ex.setVisible(true);
ex.setTitle( "Recipe Tracker" );
ex.setBackground( Color.gray );

}
}

最佳答案

问题是,在 createPage1 中,您要向 JFrame 添加一个新的 JPanel:

this.getContentPane().add(panel);

它取代了 JFrameBorderLayout.CENTER 中的 topPanel(其中包含 JTabbedPane)位置。因此不会出现 JTabbedPane

您可以简单地返回已创建的新JPanel并将其添加到您的JTabbedPane:

public JPanel createPage1() {

JPanel panel = new JPanel(new GridBagLayout());
// this.getContentPane().add(panel); don't do this...
...

return panel;
}

并添加:

tabbedPane.addTab("Input Form", createPage1());

关于java - JTabbedPane 与 GridBagLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15205146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com