如何使Tabbed Pane可见

时间:2014-06-16 01:43:14

标签: java swing awt

警告:手头的初学者非常无知!

import javax.swing.*;
import java.awt.*;

import java.awt.event.*;

public class TabbedGUI extends JFrame  {
    private static final long serialVersionUID = 1L;

    public TabbedGUI() { 

        JPanel p1 = new JPanel();
        JTabbedPane tab;
        tab= new JTabbedPane();
        TopPanel tp;
        tp=new TopPanel();
        Dimension d = new Dimension(800,600);
        tp.setPreferredSize(d);

        tp.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(800,600);
        setBackground(Color.PINK);

        //MiddlePanel 
        MiddlePanel mp;
        mp=new MiddlePanel();

        this.add (mp, BorderLayout.CENTER);
        mp.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(800,600);

        //BottomPanel
        BottomPanel bp;
        bp=new BottomPanel();
        this.add (bp, BorderLayout.SOUTH);

        bp.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(800,600);

        tab.add(tp);
        tab.add(bp);
        tab.add(mp);
        this.add(tab);

        p1.add(tp, BorderLayout.NORTH);
        p1.add(bp, BorderLayout.SOUTH);
        p1.add(mp, BorderLayout.CENTER);
        tab.setPreferredSize(d);

        tab.setVisible(true);
        this.setVisible(true);

        TopPanelC tp1;
        tp1=new TopPanelC();

        BottomPanelC bp1;
        bp1=new BottomPanelC();

        MiddlePanelC mp1;
        mp1=new MiddlePanelC();

        JPanel p2 = new JPanel();
        JTabbedPane tab1;
        tab1= new JTabbedPane();
        tab1.add(tp1);
        tab1.add(bp1);
        tab1.add(mp1);
        this.add(tab1);

        this.setVisible(true);

        p2.add(tp1, BorderLayout.NORTH);
        p2.add(bp1, BorderLayout.SOUTH);
        p2.add(mp1, BorderLayout.CENTER);

        tab1.setPreferredSize(d);
        tab1.setVisible(true);
    }

    public static void main(String[] args){
            new TabbedGUI();
    }
}

创建一个名为“TabbedGUI.java”的新GUI。将TabbedPane添加到JFrame。 TabbedPane应该有2个选项卡。第一个标签应与上面的#1相同,即学生数据的表格。第二个标签应该看起来非常相似,但会用于显示和更改课程数据。课程应该有4个textFields,“课程ID”,“课程名称”,“描述”和“学分时间”。

1 个答案:

答案 0 :(得分:2)

JFrame(或任何其他基于窗口的容器)无法添加到其他任何内容中,您需要更改UI以使组件从JPanel

等扩展

不要在可能的情况下直接从顶级容器扩展(applet是不同的野兽)。相反,围绕像JPanel这样的简单容器构建UI。这使您可以像现在一样决定如何以及何时使用组件,而不是锁定在单个顶级容器中。

整个过程很简单。 JTabbedPane是一个容器,您可以在其上添加其他组件。然后将其添加到JFrame的实例(或您想要使用的容器),例如......

请查看How to Use Tabbed Panes了解详情

enter image description here enter image description here

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TabbedExample {

    public static void main(String[] args) {
        new TabbedExample();
    }

    public TabbedExample() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JTabbedPane tabbedPane = new JTabbedPane();
                tabbedPane.add("Student", new StudentGUI());
                tabbedPane.add("Courses", new CourseGUI());

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(tabbedPane);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class StudentGUI extends JPanel {

        public StudentGUI() {
            setLayout(new BorderLayout());

            JPanel top = new JPanel(new BorderLayout());
            top.setBackground(Color.BLUE);
            top.add(new JLabel("Top"));

            JPanel middle = new JPanel(new BorderLayout());
            middle.setBackground(Color.GREEN);
            middle.add(new JLabel("Middle"));

            JPanel bottom = new JPanel(new BorderLayout());
            bottom.setBackground(Color.CYAN);
            bottom.add(new JLabel("Bottom"));

            add(top, BorderLayout.NORTH);
            add(middle);
            add(bottom, BorderLayout.SOUTH);
        }

    }

    public class CourseGUI extends JPanel {

        public CourseGUI() {
            setLayout(new BorderLayout());

            JPanel top = new JPanel(new BorderLayout());
            top.setBackground(Color.RED);
            top.add(new JLabel("Top"));

            JPanel middle = new JPanel(new BorderLayout());
            middle.setBackground(Color.ORANGE);
            middle.add(new JLabel("Middle"));

            JPanel bottom = new JPanel(new BorderLayout());
            bottom.setBackground(Color.MAGENTA);
            bottom.add(new JLabel("Bottom"));

            add(top, BorderLayout.NORTH);
            add(middle);
            add(bottom, BorderLayout.SOUTH);
        }

    }
}
相关问题