我需要使用Java Swing设计类似于Firefox > tools > options (如下所示)的窗口。 我必须创建两个顶部标题。 每次单击时,我都必须打开选项卡式窗格(与Firefox > tools > options > advanced 。)Swing几乎是我的新手。

在此处输入图片说明

感谢您的快速回复。我已尝试实施相同的方法。 基本窗口是JDialog。 我已经创建了顶部面板的Whithin。工具栏(位于topPanel的BorderLayout-North)和内容面板(位于topPanel的BorderLayout-Center)被添加到此顶部面板。 创建了两个工具栏按钮-“常规”和“高级”,它们是我上一篇文章中正在讨论的标题。“ contentPanel”是占位符面板。 我想在每当单击工具栏按钮时动态添加选项卡式面板的位置。默认为常规。

当单击高级工具栏按钮时,我要删除_generalTabbedPane并显示_advanceTabbedPane,反之亦然。

但是它没有正确发生。单击工具栏按钮时添加和删除/隐藏面板是我需要解决的问题。我已在下面附加了代码。

请帮助。

 @Override
   public JComponent createContentPanel()
  {        
   topPanel  = new JPanel();
   topPanel.setLayout(new BorderLayout());     
   JToolBar toolBar = new JToolBar();
   toolBar.add(new tabButton("general",GENERAL));
   toolBar.add(new tabButton("advanced",ADVANCED));

   contentPanel = new JPanel();       
   contentPanel.add(getGeneralTabs());

   topPanel.add(toolBar, BorderLayout.NORTH);
   topPanel.add(contentPanel, BorderLayout.CENTER);        
   return topPanel;


}  
private  final class JCenterLabel extends JLabel
{       
    public JCenterLabel(final String s)
    {
        super(s);
        setAlignmentX(Component.CENTER_ALIGNMENT);
    }

    public JCenterLabel(final Icon i)
    {
        super(i);
        setAlignmentX(Component.CENTER_ALIGNMENT);
    }
}

private  class tabButton extends JButton
{   
    public tabButton (  String tabId,String actionCommand)
    {
        super();
        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));      
        add(new JCenterLabel(UIManager.getIcon("OptionPane.informationIcon"))); 
        add(new JCenterLabel(tabId)); 
        this.setActionCommand(actionCommand);
        this.setName(tabId);
        this.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) { 
            String cmd = e.getActionCommand();
            if (GENERAL.equals(cmd)) { 
                if(contentPanel != null){
                contentPanel.remove(_advanceTabbedPane);     
                contentPanel.add(getGeneralTabs());
                contentPanel.revalidate();
                contentPanel.repaint();


                }

            } else if (ADVANCED.equals(cmd)) { 
                if(contentPanel != null){
                contentPanel.remove(_generalTabbedPane);               
                contentPanel.add(getAdvancedTabs());
                contentPanel.revalidate();
                contentPanel.repaint();


                }
            } 

        }
        });
}
}

  private JideTabbedPane  getGeneralTabs(){
    _generalTabbedPane = new JideTabbedPane();
    _generalTabbedPane.setModel(new TabbedPaneWithValidationModel());
    //adding the tabs to the _generalTabbedPane
    //-----
    //---

    return _generalTabbedPane;


}
  private   JideTabbedPane getAdvancedTabs(){
      _advanceTabbedPane = new JideTabbedPane();
      _advanceTabbedPane.setModel(new TabbedPaneWithValidationModel());
      //adding the tabs to the _advanceTabbedPane
    //-----
    //---
      return _advanceTabbedPane;

  }

===============>>#1 票数:5 已采纳

我看到一个JToolBarBorderLayout.NORTH ,一个JTabbedPaneBorderLayout.CENTERJPanel使用FlowLayout.RIGHTBorderLayout.SOUTH BorderFactory可以提供标题的边框。

附录: 我必须创建两个顶部标题。

如果需要两个顶部标题,则可以将两个JToolBar实例添加到具有GridLayout(0, 1)JPanel中,然后将该面板添加到BorderLayout.NORTH 另请参见此嵌套面板示例 使用Action封装工具栏的行为, 例如

附录: 每当单击高级工具栏按钮时,我都想删除 generalTabbedPane 并显示 advanceTabbedPane ,反之亦然。

可以使用此处显示的CardLayout来完成此任务。 更好的方法可能是让每个选项卡的抽象父级实现合适的接口方法 ,例如setAdvanced() 默认值不会执行任何操作,但是某些具体的实现可能会做出相应的响应。

  ask by user1071096 translate from so

未解决问题?本站智能推荐:

1回复

如何在Swing Java中将滚动窗格动态添加到选项卡式窗格中

我正在使用Swing应用程序,需要将“动态滚动”窗格添加到“选项卡式窗格”中,并且需要将Jpanel添加到每个“滚动”窗格中。 所以我怎么添加它我已经尝试了一个代码,但是没有添加滚动窗格。 我可以帮忙吗 这是我的代码。 它看起来像这样 但不显示滚动条,我只需要添加所有时间
2回复

为什么不显示此Swing选项卡式窗格?

有人可以解释我在JFrame.setvisible设置为true时无法显示我的JTabbedPane的类的问题吗? 是的,程序的主要方法(我将不在此处介绍)使用事件调度线程来启动ArionGUI。 这是我的JFrame代码: 这是我的JTabbedPane代码:
3回复

在Java选项卡窗格中控制颜色

我一直在努力解决这个问题。 我试图在JTabbedPane中出现一个淡蓝色背景。 我已经尝试了一切,似乎没有任何工作。 以下是我的代码。 如果您运行它,它将显示选项卡,当选择浅蓝色背景和顶部的东西蓝色边框。 我想控制这种颜色。 但是怎么样?
2回复

在Java中的Java选项卡式窗格中添加按钮组件

我正在尝试使用Java swings创建GUI。我只是Java swings的初学者。 我的主要想法是创建两个选项卡,并在其中一个选项卡中添加一个按钮。 我想为每个选项卡编写一个单独的类,因此我创建了3个类,其中一个具有main方法。另外两个代表选项卡。 在其中一个标签中,我想在中
1回复

swing-如何设置为“选项卡式窗格”选项卡分配按钮?

因此,最近我一直在研究Swing中的JTabbedPane功能,它看起来非常吸引人。 但是,我想知道是否可以将其分配给按钮,而不是使用默认的选项卡。 在下图中,我的导航菜单位于GUI的左侧。 这些图像是JButton,本质上我想发生的是,当您单击某个JButton时,它将打开一个不同的Ta
1回复

如何将一个Java应用程序插入另一个应用程序的选项卡式窗格中

我的教授要求我创建一个JSwing应用程序,该应用程序具有三个选项卡式窗格,每个窗格都包含一个游戏。 根据zetcode.com网站 ,我为三种不同的游戏(Snake,MineSweaper和Packman)创建了三种不同的Java应用程序。 每个应用程序都包含一个主类,其中包含JFra
1回复

在Java中将文本区域添加到选项卡式窗格

我有两个文件需要在程序中显示。 我需要使用JTabbedPane,每个文件应显示在其自己的标签中。 我可以使文本显示在选项卡中,但不会出现滚动条,因此我看不到文件中的所有信息。 如何将滚动条添加到文本区域? 我做了一个方法来创建一个带有文本的面板(这是一个文件)。 然后,我制作了另
1回复

在选项卡式窗格中添加标题

你能帮我在标签窗格中添加标题吗? 即使我声明,标签窗格中也没有标题。 我正在创建一个框架,其中将有选项卡式窗格,选项卡式窗格内部有面板,我遇到的问题是我无法在选项卡式窗格中添加名称,即使我使用了正确的方法。 我已经尝试过tabbedPane.add() , tabbedPane.a
2回复

如何从选项卡窗格中删除选项卡

我已经创建了一个秋千应用程序,如下所示,当单击与特定任务相关的按钮时,该应用程序会在选项卡中显示主要任务。 我为每个选项卡添加了一个小的关闭按钮,单击与该选项卡相关的关闭按钮时,需要关闭该选项卡。 关闭按钮属于从JPanel类扩展为以下类的类, 在主框架中,我将SELECTED
1回复

在Java应用程序中创建自定义的TitleBar和选项卡式窗格

我正在为特定的Java应用程序设计UI。 我需要创建一个这样的UI,有人可以指导我有关创建该UI的全部内容: 我很抱歉画图。 希望它能达到目的:-|。 我特别需要的是- 包含应用程序标题的粉红色选项卡始终是不变的,而附近标签中的文本(写为“更改标题将有所不同”)。