当前位置: 首页 > 面试题库 >

从动态添加的jPanel获取文本

白子昂
2023-03-14
问题内容

我动态地添加subPaneljPanel1(与jTextFieldjButton)。部分代码是从那里借来的。

我正在尝试从的组件获取文本jPanel1,但无法成功。

编辑: 这是一个包含子面板jTextField+Button-Button

private class subPanel extends javax.swing.JPanel {         
        subPanel me;
        public subPanel() {
            super();
            me = this;
            JTextField myLabel = new JTextField(15);
            add(myLabel);
            JButton myButtonRemove = new JButton("-");
            JButton myButtonAdd = new JButton("+");
            add(myButtonRemove);
            add(myButtonAdd);

这是AddButton的代码:

    jPanel1.add(new subPanel());
    pack();

我试图从中获取文本的代码jTextField不起作用:

     Component[] children = jPanel1.getComponents();
     for (int i=0;i<children.length;i++){
     if (children[i] instanceof JTextField){
     String text = ((JTextField)children[i]).getText();
     System.out.println(text);

}

您的答复将不胜感激。


问题答案:

问题是:您正在遍历以下子项jPanel1

jPanel1.getComponents();

并期望有一个JTextField

if (children[i] instanceof JTextField){
     String text = ((JTextField)children[i]).getText();
     System.out.println(text);
}

但是,既然您已经添加subPanelsjPanel1,jPanel1的子项就subPanels不会了JTextFields

因此,要访问JTextFields,您必须subPanels在一秒钟内遍历的子项for-loop

例:

Component[] children = jPanel1.getComponents();
// iterate over all subPanels...
for (Component sp : children) {
    if (sp instanceof subPanel) {
        Component[] spChildren = ((subPanel)sp).getComponents();
        // now iterate over all JTextFields...
        for (Component spChild : spChildren) {
            if (spChild instanceof JTextField) {
                String text = ((JTextField)spChild).getText();
                System.out.println(text);
            }
        }
    }
}


 类似资料:
  • 问题内容: 如何在jpanel中动态添加组件?当我单击按钮时,我应该有添加按钮,组件应该添加到JPanel。 我的问题是,当我单击添加按钮时,将文本字段和按钮添加到jpanel时,用户可以根据需要将它们添加到jpanel中的任意次数单击添加按钮。我已将scrollerpane添加到我的jpanel,并且jpanel布局管理器设置为null。 问题答案: 像往常一样,除了必须调用: 完成后,因为容器

  • 因此,我的问题是面板被插入到JScrollPane中,这些面板的大小正在减小,但没有滚动条。 这是我的代码,我已经播种很远:

  • 我有一个从文件生成的面板。我不知道到底要添加多少字段和标签,我希望它包含两列label和field。我认为我可以通过GridBagLayout和GridBagConstraints来做到这一点,但我不知道如何做到这一点。有人知道如何从JPanel/JFrame中恢复GridBagConstraints吗? 如果没有,我们将非常感谢您提出的任何替代方案。

  • 问题内容: 我对此有疑问。我有一个JPanel,通常我会像这样创建一个JLabel: 但是我希望每次单击一个按钮时,在该面板中创建一个新的JLabel,它的大小相同,但高度不同。我试过了: 但是这样一来,我就无法设定界限。我从JTextField获得的stringName。 问题答案: 首先,使用layout。正确完成布局后,组件将按照需要放置。其次,在向布局动态添加组件时,您需要告诉布局更新。这

  • 问题内容: 在NetBeans中,我已经使用GUI编辑器制作了一个JFrame,并且在框架中放置了一个JPanel。目前,我正在尝试在类构造时在面板中创建一个新按钮。这是我的代码,但似乎无法正常工作。(第一行显示该按钮,其他行尝试显示该按钮。) 我整夜都在搜寻Google,但似乎无法正常运作。 问题答案: 有时候,您看不到按钮是布局管理器问题(因为您没有为布局管理器设置正确的属性)。您可以通过禁用

  • 本文向大家介绍JS获取动态添加元素的方法详解,包括了JS获取动态添加元素的方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS获取动态添加元素的方法。分享给大家供大家参考,具体如下: 在页面的渲染中,我们经常用遇到动态添加的DOM元素,那么在获取这些元素的时候或则为这些DOM元素的时候,我们有下面三种处理方法: 1.  在模板引擎里面添加行内事件 2.  利用事件的委托获取(常用)