繁体   English   中英

通过事件添加带有 JTabbedPane 的新标签

[英]Adding new Tab with JTabbedPane through event

我在这里有两个类:MainScreen 和 QueryScreen。 MainScreen 已经在 int 上实现了一个 JTabbedPane。 QueryScreen 扩展了 MainScreen。

我试图添加一个选项卡,通过 QueryScreen 调用一个事件,但它没有出现在应用程序中。 请结帐示例代码:

查询屏幕:

 public class QueryScreen extends MainScreen {

        private JSplitPane engineList;
        final JPanel queryList = new JPanel();

        public QueryScreen(){

            tabbedPane.addTab( "Query List", queryList );
            add( tabbedPane, BorderLayout.CENTER );

        }
    }

主屏幕:

 public class MainScreen extends JFrame implements ActionListener {
        /**
         * 
         */
        JMenuBar bar;
        JMenu file, register;
        JMenuItem close, search;
        ImageIcon image1= new ImageIcon("rsc/img/logo.jpg");
        JLabel lbImage1;
        JTabbedPane tabbedPane = new JTabbedPane();
        final JPanel entrance = new JPanel();


        /**
         * 
         */

public MainScreen()
        {           
                lbImage1= new JLabel(image1, JLabel.CENTER);
            entrance.add(lbImage1);
            tabbedPane.addTab( "Entrance", entrance );
            add( tabbedPane, BorderLayout.CENTER );

            bar= new JMenuBar();
            file= new JMenu("File");
            register= new JMenu("Search");

            close= new JMenuItem("Close");
            close.addActionListener(this);

            search= new JMenuItem("Request Query");
            search.addActionListener(this);


            //Keyboard Shortcut
            register.setMnemonic(KeyEvent.VK_S);
            file.setMnemonic(KeyEvent.VK_F);
            search.setMnemonic(KeyEvent.VK_R);




            //Ibimage1.setVerticalTextPosition(SwingConstants.CENTER);

            bar.add(file);
            bar.add(register);
            file.add(close);
            register.add(search);
            setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH); // Maximized Window or setSize(getMaximumSize());
            setTitle("SHST");
            setJMenuBar(bar);
            setDefaultCloseOperation(0);

                WindowListener J=new WindowAdapter(){
                public void windowClosing(WindowEvent e){
                System.exit(0);
                }
            }; 

            addWindowListener(J);
    }

        public void actionPerformed(ActionEvent e){
            if(e.getSource()==close){
                System.exit(0);
            }

            if(e.getSource()==search){
                Search s= new Search();
                s.setVisible(true);
            }

            }
    }

ps:MainScreen 对象和它的 setVisible 来自运行类,它只调用这个 MainScreen。

我怎样才能添加这个新标签?

提前致谢

编辑一:

在此处输入图片说明

将来请发布SSCCE而不是复制/粘贴某些课程。

这是您的 MainScreen 的 SSCCE,去掉了非必需品,并添加了一个主要方法:

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

public class MainScreen extends JFrame
{
  JTabbedPane tabbedPane = new JTabbedPane();
  final JPanel entrance = new JPanel();

  public MainScreen()
  {
    tabbedPane.addTab("Entrance", entrance);
    add(tabbedPane, BorderLayout.CENTER);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  public static void main(String[] args)
  {
    SwingUtilities.invokeLater(new Runnable()
    {
      public void run()
      {
        JFrame frame = new MainScreen();
        frame.setSize(300, 200);
        frame.setVisible(true);
      }
    });
  }
}

...这是QueryScreen的SSCCE:

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

public class QueryScreen extends MainScreen
{
  final JPanel queryList = new JPanel();

  public QueryScreen()
  {
    tabbedPane.addTab("Query List", queryList);
    //add( tabbedPane, BorderLayout.CENTER );    /* not needed */
  }

  public static void main(String[] args)
  {
    SwingUtilities.invokeLater(new Runnable()
    {
      public void run()
      {
        JFrame frame = new QueryScreen();
        frame.setSize(300, 200);
        frame.setVisible(true);
      }
    });
  }
}

如您所见,这是有效的,而且在大多数情况下,我所做的只是删除了不必要的代码并为每个代码添加了一个 main。

如果您仍然遇到问题,请使用 SSCCE 更新您的问题并发布您遇到的具体问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM