여기에 아주 간단한 예가 나와 드리겠습니다.
내가이 JInternalFrame의에게 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 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);
}
}
클래스를 확장, 실행합니다.
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();
}
});
}
}