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

Java JTabbedPane获取组件

许俊雅
2023-03-14

我正在尝试更新我编写的程序的GUI。在新的GUI上,我有一个JFrame,其中包含一个JPanel,它有一个JTabbedPane和上面的两个按钮。

在JTabbedPane中,我有三个JPanel,其中包含不同的组件。(如按钮、文本字段等)所以现在我必须让所有组件根据类型对其执行相同的操作。

如果有一个文本字段,我必须做一些事情,但如果有一个按钮,我必须做其他事情。

所以之前我做过这样的事情:

    Container focus = general_panel.getFocusCycleRootAncestor();
    FocusTraversalPolicy ftp = focus.getFocusTraversalPolicy();
    Component comp = ftp.getFirstComponent(general_panel);
    Component first = comp;
    while(comp != null){
       if(comp instanceof JComboBox){
           ((JComboBox) comp).setSelectedIndex(0);
       }
       ....

       comp = ftp.getComponentAfter(focus, comp);

       if(comp.equals(first)){
           break;
       }
    }

并且使用带有以前GUI的JGroup可以正常工作。但是现在,与选项卡窗格相同的方法我只接收第一个组件和许多“null”而不是其他组件。

这是System.out.pritnln(comp)的结果,选项卡窗格内有一个Jpanel

javax.swing.JComboBox[,26,24,78x25,layout=javax.swing.plaf.basic.BasicComboBoxUI$Handler,alignmentX=0.0,alignmentY=0.0,border=com.bulenkov.darcula.ui.DarculaComboBoxUI@3b43d6ce,flags=328,maximumSize=,minimumSize=,preferredSize=,isEditable=false,lightWeightPopupEnabled=true,maximumRowCount=8,selectedItemReminder=Bianco]
null
null
null
null
null
null
null
null
null
null
null
null
null
null

“旧的”GUI和新的GUI都是用嵌入NetBeans中的GUI创建者完成的,因此所有组件的设置可能都是相同的。。

但是TabbedPane中的面板的处理方式是否与JFrame上的J面板不同?

共有1个答案

段干麒
2023-03-14

为了防止有人在同样的情况下被堆叠,我解决了这个问题:

在GUI类中,使用面板创建了一个容器:

Container focus = pnl_generali.getFocusCycleRootAncestor();

然后下面的方法完成剩下的工作:

public static List<Component> getAllComponents(final Container c) {
        Component[] comps = c.getComponents();
        List<Component> compList = new ArrayList<Component>();
        for (Component comp : comps) {
          compList.add(comp);
          if (comp instanceof Container) {
            compList.addAll(getAllComponents((Container) comp));
          }


            if(comp instanceof JTextField){
                 System.out.println(comp);
            }

        }
        return compList;
    }
 类似资料:
  • 问题内容: 如果我有 我怎样才能从? 如果我这样做,那我就代替了。 问题答案: 组件类型 用这个: 返回表示数组的组件类型的信息。如果此类不表示数组类,则此方法返回。 参考: 安全/不安全铸造 有没有一种方法可以从getComponentType()返回的Class强制转换为Class,而不会收到编译器警告? 采取这种方法: 这是生成的字节码: 如您所见,参数类型被擦除为Object [],因此编

  • 问题内容: 如何获得Java 键盘EG(+ ,+ )上的按键组合? 我使用监听器,键盘上所有按键的监听器。我可以使用该监听器捕获键盘上的所有按键事件。但是,我无法捕捉到(+ + )....等组合键。 问题答案:

  • 主要内容:JavaTuples 获取元组值的方法,JavaTuples 获取元组值方法的特征,JavaTuples 获取元组值的示例JavaTuples 获取元组值的方法 元组具有 getValueX() 方法来获取值,而 getValue() 是一种通过索引获取值的通用方法。例如 Triplet 类具有以下方法。 getValue(index) :从 0 开始返回索引处的值。 getValue0() : 返回索引 0 处的值。 getValue1() : 返回索引 1 处的值。 getValu

  • 在这个例子中,我想在我的父组件中使用我的子组件的状态。

  • 我把一些JPanel放到另一个JPanel中,它的布局是长方体布局和Y轴。在我放置了所有面板之后,我需要从JPanel容器面板获取每个添加的JPanel的Y位置。当我每次都得到零的时候。请告诉我如何从Jpanel容器Jpanel获取每个Jpanel的Y位置。 这就是我所做的,

  • 我正在尝试匹配下面句子中只包含“Jack”的组。我想创建一个正则表达式,它可以获取“hello”之后以及字符串“my friend”之前或之后的任何内容。 以下不起作用: 关于如何在可选组之间建立一些组的任何建议都会很棒。