当前位置: 首页 > 知识库问答 >
问题:

选项卡内的面板未显示

东郭鸿福
2023-03-14

我正在尝试有一个使用IntelliJ GUI表单的UI。我创建了一个扩展JFrame的类,它只包含带有两个选项卡的JTabbedPane,每个选项卡都有一个JPanel。然后是扩展JPanel的2个其他类。但是,发射时没有面板显示。

我已经尝试使面板失效,重新涂漆和重新验证

//main class
import javax.swing.*;

public class jumpManMain {
    public static void main (String[] args) {
        SwingUtilities.invokeLater(() -> {
            final JFrame frame =  new frmTabs();
        });
    }
}

// tabbedpanel class
public class frmTabs extends JFrame implements constants{
    private JTabbedPane tabbedPane;
    private JPanel panelTab1;
    private JPanel panelTab2;

    public frmTabs()
    {
        setContentPane(tabbedPane);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(FORM_LEFT, FORM_TOP, FORM_WIDTH, FORM_HEIGHT);
        panelTab1 = new panel1();
        panelTab2 = new panel2();
        pack();
        setVisible(true);
        setSize(FORM_WIDTH,FORM_HEIGHT);


        ChangeListener changeListener = new ChangeListener() {
            public void stateChanged(ChangeEvent changeEvent) {
                JTabbedPane sourceTabbedPane = (JTabbedPane) changeEvent.getSource();
                int index = sourceTabbedPane.getSelectedIndex();
                System.out.println("Tab changed to: " + sourceTabbedPane.getTitleAt(index));
                panelTab1.revalidate();
                panelTab1.repaint();
                panelTab2.revalidate();
                panelTab2.repaint();
            }
        };
        tabbedPane.addChangeListener(changeListener);
    }

}
//tabs form generated by IntelliJ
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="frmTabs">
  <tabbedpane id="78766" binding="tabbedPane">
    <constraints>
      <xy x="20" y="20" width="900" height="560"/>
    </constraints>
    <properties>
      <minimumSize width="900" height="560"/>
      <preferredSize width="900" height="560"/>
    </properties>
    <border type="none"/>
    <children>
      <grid id="35c5e" binding="panelTab1" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
        <margin top="0" left="0" bottom="0" right="0"/>
        <constraints>
          <tabbedpane title="Jumps arrived"/>
        </constraints>
        <properties>
          <maximumSize width="1000" height="1000"/>
          <minimumSize width="900" height="560"/>
          <preferredSize width="900" height="560"/>
        </properties>
        <border type="none"/>
        <children/>
      </grid>
      <grid id="4323" binding="panelTab2" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
        <margin top="0" left="0" bottom="0" right="0"/>
        <constraints>
          <tabbedpane title="Jumps created"/>
        </constraints>
        <properties>
          <maximumSize width="1000" height="1000"/>
          <minimumSize width="900" height="560"/>
          <preferredSize width="900" height="560"/>
        </properties>
        <border type="none"/>
        <children/>
      </grid>
    </children>
  </tabbedpane>
</form>

//panel1 XML
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="panel1">
  <grid id="27dc6" binding="panelMain" layout-manager="GridLayoutManager" row-count="6" column-count="5" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
    <margin top="5" left="5" bottom="5" right="5"/>
    <constraints>
      <xy x="21" y="20" width="900" height="560"/>
    </constraints>
    <properties>
      <minimumSize width="900" height="560"/>
      <preferredSize width="900" height="560"/>
      <requestFocusEnabled value="true"/>
    </properties>
    <border type="bevel-raised" title="Jump Ticket Manager">
      <font name="Arial Black" style="1"/>
      <title-color color="-4451918"/>
    </border>
    <children>
....
    </children>
  </grid>
</form>
...

共有1个答案

穆飞星
2023-03-14

您缺少以下步骤

1.JTabbedPane初始化

  tabbedPane = new JTabbedPane();

向JTabbedPane中添加面板

tabbedPane.add(panelTab1);
tabbedPane.add(panelTab2);
 public class Main {
     public static void main(String[] args) {
         SwingUtilities.invokeLater(() -> {
            final JFrame frame =  new frmTabs();
       });
   }
 }

class frmTabs extends JFrame implements constants{
private JTabbedPane tabbedPane;
private JPanel panelTab1;
private JPanel panelTab2;

public frmTabs()
{
    tabbedPane = new JTabbedPane();
    setContentPane(tabbedPane);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(FORM_LEFT, FORM_TOP, FORM_WIDTH, FORM_HEIGHT);
    panelTab1 = new JPanel();
    panelTab2 = new JPanel();
    panelTab1.setName("first Tab");   //To add titles to your tabs
    panelTab2.setName("Second Tab");  //to add titles to your tabs
    tabbedPane.add(panelTab1);
    tabbedPane.add(panelTab2);
    pack();
    setVisible(true);
    setSize(FORM_WIDTH,FORM_HEIGHT);


    ChangeListener changeListener = new ChangeListener() {
        public void stateChanged(ChangeEvent changeEvent) {
            JTabbedPane sourceTabbedPane = (JTabbedPane) changeEvent.getSource();
            int index = sourceTabbedPane.getSelectedIndex();
            System.out.println("Tab changed to: " + sourceTabbedPane.getTitleAt(index));
            panelTab1.revalidate();
            panelTab1.repaint();
            panelTab2.revalidate();
            panelTab2.repaint();
        }
    };
    tabbedPane.addChangeListener(changeListener);
    }
  }
  panelTab1.setName("first Tab");  
  panelTab2.setName("Second Tab");
  Tab changed to: Second Tab
  Tab changed to: first Tab

  Process finished with exit code 0
 类似资料:
  • 我正在一个名为Dashboard的类中创建一个标签疼痛,它在标签中包含“填充”面板。我想知道是否有办法创建一个新的仪表板并更改我存储在选项卡中的面板。我不确定这是否是正确的解释方法,但这里有一些代码。 我现在想创建一个新类来创建和实例仪表板,但更改选项卡中显示的面板。我尝试了这样的操作: 我不确定这是否可能,或者是否有另一种方法可以做到这一点。

  • 我很好奇,让内容(例如div)在t:panelTabbedPane中占据100%的t:panelTab的正确方式是什么。内容似乎是在无法指定样式的div或span中呈现的。我能做到这一点的唯一方法就是使用绝对布局。有更好的办法吗?

  • 我试图修改JavaFX8中的TabPage控件,使其向视口显示当前选定选项卡前面(右边)的一些选项卡,或者如果选定选项卡位于标题的最左边,它会显示当前选项卡前面附近的选项卡。 现在怎么样了: 我想让它表现得像: 当用户选择索引X的选项卡时,选项卡窗格标题显示附近的另外2或3个选项卡。 谢谢你的阅读。

  • 我对tabView有问题。第一个选项卡应始终显示相同的内容(称为搜索模板,用#{not curSearch.isClosable()}标识)。所有其他选项卡都是搜索实例(用#{curSearch.isClosable()}标识) 代码如下: 不幸的是,在第一个选项卡上有一些被称为curSearch对象的方法,这些方法仅在第二个选项卡和后面的选项卡上使用。如果我不使用ui:insert,它不会改变任

  • 问题内容: 我正在尝试使用Leaflet.js在Twitter Bootstrap的选项卡式面板内显示地图,但行为方式很奇怪: 当我单击包含面板的选项卡时,地图顶部有一个灰色层。如果拖动并移动地图,我会看到其他图块,但看不到初始图块。 更奇怪的是,如果我调整浏览器的大小,突然间它可以正常工作,直到我再次重新加载,所以我猜这是css的问题,但我找不到问题。 同样,将地图放置在选项卡式面板之外也很有效

  • 我正在建立一个基于JS的选项卡导航,但不知怎么选项卡内容没有正确显示。其思想是只显示活动状态的选项卡内容。 我只想让选项卡内容显示属于该选项卡的内容。 代码如下所示: null null 我找不到错误。非常感谢任何帮助。 预先默许 a