java - 如何将 JScrollPane 与 JTabbedPane 一起使用?

标签 java swing jscrollpane jtabbedpane

public RoteLearnerTabbedPanePage() throws IOException, SAXException, ErrorCondition
        {
            JFrame frm=new JFrame();


            tabbedPane=new JTabbedPane();
            Document doc=rx.readXmlFile();
            if(!rx.validateClassIds())
            {
                JOptionPane.showMessageDialog(panel1,"Check Xml file. Duplicate 'Class Ids' are present","Error", JOptionPane.ERROR_MESSAGE);
                System.exit(0); 
            }
            if(!rx.validateAttributeIds())
            {
                JOptionPane.showMessageDialog(panel1,"Check Xml file. Duplicate 'Attribute Ids' are present","Error", JOptionPane.ERROR_MESSAGE);
                System.exit(0);     
            }
            if(!rx.isValidMainClass())
            {
                JOptionPane.showMessageDialog(panel1,"Check Xml File. Main-class declaration for one of the domain classes seems invalid","Error", JOptionPane.ERROR_MESSAGE);
                System.exit(0);
            }
            Hashtable<String,String> mainclasnames=rx.getMainClassNames(doc, doc.getChildNodes());

            Set<XmlClass> guiAttrVals=rx.getGuiAttributeValues(doc, doc.getChildNodes());
            int j=0;
            int i=0;
            Iterator<Entry<String, String>> mainclass_it = mainclasnames.entrySet().iterator();
            while(mainclass_it.hasNext())
            {

                Entry<String, String> classDet = mainclass_it.next();
                String classname = classDet.getValue();
                final Hashtable<JLabel,JTextField> uiParams=new Hashtable<JLabel,JTextField>();
                JButton buttonLearn = new JButton("Learn");
                panel1= new JPanel();
                panel1.setLayout(new BoxLayout(panel1, BoxLayout.PAGE_AXIS));
                transientPanel=new JPanel(new GridBagLayout());

                // Create a sequential group for the vertical axis.
                nonTransientPanel=new JPanel(new GridBagLayout());
                JScrollPane scroll1 = new JScrollPane(panel1);
                tabbedPane.add(scroll1);
                // Create a sequential group for the horizontal axis.

                GridBagConstraints constraints = new GridBagConstraints();
                GridBagConstraints nontranconstraints = new GridBagConstraints();
                Iterator<XmlClass> guiItr=guiAttrVals.iterator();
                while(guiItr.hasNext())
                {       
                    XmlClass xmlclasss=guiItr.next();
                    if(classname.equals(xmlclasss.getName()))
                    {
                        Set<XmlAttributes> xmlAttrs=xmlclasss.getAttributes();
                        Iterator<XmlAttributes> xmlattrItr=xmlAttrs.iterator();
                        while(xmlattrItr.hasNext())
                        {

                            XmlAttributes xa=xmlattrItr.next(); 
                            String attrname=xa.getName();
                            String isTransient=xa.isTransientAttr();
                            if(isTransient.equals("false"))
                            {
                                nontranconstraints.insets = new Insets(10, 10, 10, 10);
                                nontranconstraints.gridx = 0;
                                nontranconstraints.gridy = i;
                                JLabel name = new JLabel(attrname);
                                if(primaryKeys.contains(name.getText()))
                                {
                                    name.setForeground(Color.RED);
                                }
                                else
                                {
                                    name.setForeground(Color.BLUE);
                                }
                                panel1.add((nonTransientPanel), BorderLayout.CENTER);
                                nonTransientPanel.setPreferredSize(new Dimension(200,100));
                                nonTransientPanel.add(name,nontranconstraints);
                                nontranconstraints.gridx = 1;
                                JTextField value = new JTextField(20);
                                nonTransientPanel.add(value,nontranconstraints);
                                i++;
                                uiParams.put(name, value);
                            }
                            else
                            {
                                constraints.insets = new Insets(10, 10, 10, 10);
                                constraints.gridx = 0;
                                constraints.gridy = j;
                                JLabel name = new JLabel(attrname);
                                if(primaryKeys.contains(name.getText()))
                                {
                                    name.setForeground(Color.RED);
                                }
                                else
                                {
                                    name.setForeground(Color.BLUE);
                                }
                                transientPanel.setPreferredSize(new Dimension(200,100));
                                transientPanel.add(name,constraints);
                                constraints.gridx = 1;
                                JTextField value = new JTextField(20);
                                transientPanel.add(value,constraints);
                                j++;
                                uiParams.put(name, value);
                            }
                        }

                        nonTransientPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Non Transient Attributes"));

                        panel1.add(nonTransientPanel);
                        panel1.setPreferredSize(new Dimension(300,300));
                        transientPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Transient Attributes"));
                        panel1.add(transientPanel);         
                        constraints.gridx = 0;
                        constraints.gridy = ++j;
                        //constraints.gridwidth = 2;
                        constraints.anchor = GridBagConstraints.SOUTH;
                        //buttons.add(buttonLearn,constraints);
                        buttonLearn.setAlignmentX(Component.CENTER_ALIGNMENT);
                        panel1.add(buttonLearn);
                        //panel1.setLayout(fl);
                        tabbedPane.addTab(classname, panel1);
                    }
                }

这是我的代码。我对此真的很陌生。我不确切知道如何将 JScrollPane 与 JTabbedPane 一起使用。我正在使用 JtabbedPane,其中有一个外部 JPanel,其中包含 3 个内部 jPanel,即。 transient 面板、非 transient 面板和按钮面板。

最佳答案

尝试将滚动添加到选项卡:

                    // panel1.setLayout(fl);
                    tabbedPane.addTab(classname, scroll1);

而不是你的 panel1 :

                // panel1.setLayout(fl);
                tabbedPane.addTab(classname, panel1);

关于java - 如何将 JScrollPane 与 JTabbedPane 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25910070/

相关文章:

Java Swing : Can't show several instances of my JPanel

java - 使用 Java 在 Windows 7 上创建可移动的最大化窗口

java - 在Hibernate中,除了如何处理坏ID之外,session.get()和session.load()之间还有什么区别吗?

java - Android Parcel.obtain() 返回空值?

javax.persistence.PersistenceException : No Persistence provider for EntityManager named money-transfer

java - 图书类: How to print continually with no page separation

java - Tomcat 更新 context.xml 但不应该

jquery - JScrollPane:增加内部文本字体大小后调整滚动位置

java - 具有自定义背景的 JScrollPane

java - JScrollPaneLayout怎么设置和JTable一样?