Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何才能不复制内部框架_Java_Swing_Jinternalframe_Jdesktop - Fatal编程技术网

Java 如何才能不复制内部框架

Java 如何才能不复制内部框架,java,swing,jinternalframe,jdesktop,Java,Swing,Jinternalframe,Jdesktop,我正在测试一些使用内部框架的代码。所以我不想打开程序中已经运行的新的内部框架。我的意思是,当我点击一个菜单打开一些在我的外部框架中已经打开的内部框架时,该内部框架可能会在我的框架中重复,我如何解决这种情况。请。这里有一个非常简单的例子,希望能对您有所帮助 我延长了一段时间 import javax.swing.JInternalFrame; public class WeatherIFrame extends JInternalFrame { public WeatherIFrame

我正在测试一些使用
内部框架的代码。所以我不想打开程序中已经运行的新的
内部框架。我的意思是,当我点击一个菜单打开一些在我的
外部框架
中已经打开的
内部框架时,该内部框架可能会在我的框架中重复,我如何解决这种情况。请。

这里有一个非常简单的例子,希望能对您有所帮助

我延长了一段时间

import javax.swing.JInternalFrame;

public class WeatherIFrame extends JInternalFrame {

    public WeatherIFrame() {
        this.setTitle("Weather");
        this.setSize(300, 200);
        this.setVisible(true);
        this.setClosable(true);
        this.setResizable(true);        
    }
}
一个类,它生成JFrame并包含JDesktopPane

import de.professional_webworkx.dashboard.internalframes.WeatherIFrame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
import javax.swing.event.InternalFrameListener;

public class MainFrame extends JFrame {

    private JDesktopPane desktopPane;
    private WeatherIFrame weatherIFrame;

    /**
     * Menuitems
     */
    MenuItem openWeatherFrame;
    MenuItem exitApp;

    public MainFrame() {            
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Dashboad");
        this.setSize(1024, 768);
        this.getContentPane().add(initDesktopPane());
        this.setMenuBar(initMenu());
        this.setVisible(true);
    }

    private JDesktopPane initDesktopPane() {
        desktopPane = new JDesktopPane();
        return desktopPane;
    }

    private MenuBar initMenu() {
        MenuBar menuBar = new MenuBar();
        Menu fileMenu = new Menu("File");
        openWeatherFrame = new MenuItem("Show Weatherforcast");
        openWeatherFrame.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if(weatherIFrame == null) {
                    weatherIFrame = new WeatherIFrame();
                    weatherIFrame.addInternalFrameListener(new InternalFrameListener() {

                        @Override
                        public void internalFrameOpened(InternalFrameEvent e) {
                        }

                        @Override
                        public void internalFrameClosing(InternalFrameEvent e) {
                        }

                        @Override
                        public void internalFrameClosed(InternalFrameEvent e) {
                            weatherIFrame = null;
                        }

                        @Override
                        public void internalFrameIconified(InternalFrameEvent e) {
                        }

                        @Override
                        public void internalFrameDeiconified(InternalFrameEvent e) {
                        }

                        @Override
                        public void internalFrameActivated(InternalFrameEvent e) {
                        }

                        @Override
                        public void internalFrameDeactivated(InternalFrameEvent e) {
                        }
                    });
                    desktopPane.add(weatherIFrame);
                }

            }
        });            
        fileMenu.add(openWeatherFrame);
        menuBar.add(fileMenu);
        return menuBar;
    }
}
现在,运行它

import de.professional_webworkx.dashboard.frame.MainFrame;
import javax.swing.SwingUtilities;

public class Dashboard {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new MainFrame();
            }
        });
    }    
}