Hallo Javagemeinde,
ich habe leider noch so meine Probleme, ein JInternalFrame richtig zu implementieren. Anbei mein Ansatz. Leider erscheit das JInternalFrame nach dem Aufruf erst nach dem ich auf den JFrame klicke. Ferner werden die .setSize() Angaben nicht übernommen.
Vermutlich liegt es daran, dass ich auf "frame" und nicht auf das "desktop" referenziere. Wie bringe ich dem JInternalFrame bei, dass es nicht direkt auf frame, sondern auf desktop platziert wird?
Geht das so überhaupt?
MainFrame:
Danach das MainMenu. Dort wird dann über das Item der JInternalFrame aufgerufen:
Nun noch das JInternalFrame
ich habe leider noch so meine Probleme, ein JInternalFrame richtig zu implementieren. Anbei mein Ansatz. Leider erscheit das JInternalFrame nach dem Aufruf erst nach dem ich auf den JFrame klicke. Ferner werden die .setSize() Angaben nicht übernommen.
Vermutlich liegt es daran, dass ich auf "frame" und nicht auf das "desktop" referenziere. Wie bringe ich dem JInternalFrame bei, dass es nicht direkt auf frame, sondern auf desktop platziert wird?
Geht das so überhaupt?
MainFrame:
Code:
public class MainFrame extends JFrame {
private static final long serialVersionUID = 3258131345233623349L;
private MainMenu mainMenu;
private JDesktopPane desktop;
private Color bgcolor = new Color(250,250,100);
public MainFrame(){
setTitle( "Tutorial" );
setDefaultCloseOperation( DO_NOTHING_ON_CLOSE );
// Create and add JDesktopPane
desktop = new JDesktopPane();
getContentPane().add(desktop);
desktop.setBackground( bgcolor );
mainMenu = new MainMenu( this );
setJMenuBar( mainMenu );
setSize( 900, 600 );
setLocationRelativeTo( null );
addWindowListener( new WindowAdapter(){
public void windowClosing( WindowEvent e ) {
exit();
}
});
}
public void exit(){
System.exit( 0 );
}
}
Danach das MainMenu. Dort wird dann über das Item der JInternalFrame aufgerufen:
Code:
package gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
public class MainMenu extends JMenuBar implements ActionListener {
private static final long serialVersionUID = 3761684610957719088L;
/** Das Hauptfenster dieses Programme */
private MainFrame frame;
private JMenuItem exitItem, mitarbeiterItem, firmaItem, ansprechItem, importItem, helpinfoItem;
private InternalFrameCoworker internalFrameCoworker;
public MainMenu (MainFrame frame) {
this.frame = frame;
// Set the look and feel
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex)
{
ex.printStackTrace();
}
JMenu fileMenu = new JMenu( "Datei" );
JMenu windowMenu = new JMenu( "Anzeigen" );
JMenu importMenu = new JMenu( "Datenimport" );
JMenu helpMenu = new JMenu( "Hilfe" );
exitItem = new JMenuItem("Beenden");
exitItem.addActionListener(this);
mitarbeiterItem = new JMenuItem("Mitarbeiterdaten");
mitarbeiterItem.addActionListener(this);
firmaItem = new JMenuItem("Firmen");
firmaItem.addActionListener(this);
ansprechItem = new JMenuItem("Ansprechpartner");
ansprechItem.addActionListener(this);
importItem = new JMenuItem("Datenimport");
importItem.addActionListener(this);
helpinfoItem = new JMenuItem("Version");
helpinfoItem.addActionListener(this);
fileMenu.add(exitItem);
windowMenu.add(mitarbeiterItem);
windowMenu.add(firmaItem);
windowMenu.add(ansprechItem);
importMenu.add(importItem);
helpMenu.add(helpinfoItem);
add( fileMenu );
add( windowMenu );
add( importMenu );
add( helpMenu );
}
public void actionPerformed(ActionEvent evt){
Object source = evt.getSource();
if (source == exitItem)
System.exit(0);
else if (source == mitarbeiterItem)
{
internalFrameCoworker = new InternalFrameCoworker(frame);
}
else if (source == firmaItem)
{
}
else if (source == ansprechItem)
{
}
else if (source == importItem)
{
}
else if (source == helpinfoItem)
{
JOptionPane.showMessageDialog(frame,"Version 2.0 vom 14.04.2005 \n Autor: Rocco Rignanese", "Versionsinfo", JOptionPane.INFORMATION_MESSAGE);
}
}
}
Nun noch das JInternalFrame
Code:
package gui;
import java.awt.BorderLayout;
import javax.swing.JInternalFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class InternalFrameCoworker extends JInternalFrame {
private static final long serialVersionUID = 3256999969159592242L;
private JTable mitarbeiterTable;
// private JScrollPane scrollPane;
private MainFrame frame;
public InternalFrameCoworker(MainFrame frame) {
super("Mitarbeiterdaten", true, true, false, false);
this.frame = frame;
// mitarbeiterTableModel mitarbeiterTableTm = new mitarbeiterTableModel();
// JTable mitarbeiterTable = new JTable(mitarbeiterTableTm);
JTable mitarbeiterTable = new JTable();
getContentPane().add( new JScrollPane( mitarbeiterTable ), BorderLayout.CENTER );
setLocation(20,10);
setSize(400,300);
setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
// pack();
setVisible(true);
frame.getContentPane().add(this);
moveToFront();
}
}