JDesktopPane with JToolbar
843804Nov 9 2004 — edited Nov 9 2004Hi!
I'd like to write an MDI application. I have a JFrame which contains a JDesktopPane and a JToolBar.
When I push a button on the toolbar, a new JInternalFrame appears on the desktop.
My problem:
1. If I add the toolbar to the desktop, it has to be a layout set, and then If I open a new internal frame, it will spread out all the desktoppane -- wrong
2. if I add the desktop and the toolbar to the JFrame's contentpane, then the internal frames don't even appear...
I would appreciate if I press the "tasks" button on the toolbar, then a new internal frame would appear on a part of the desktop... and so on.
Any ideas?
Sorry for bad English :)
Thanks.
Here's some code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.sql.Connection;
public class Keretablak extends JFrame implements ActionListener
{
.......
Keretablak(Connection a_connection,String a_szerver,String s,String t)
{
......
tasks=new JButton("Feladatok");
tasks.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
showTaskDisplayer();
tasks.setEnabled(false);
}});
int inset = 50;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(inset, inset,screenSize.width - inset*2,
screenSize.height - inset*2);
JPanel fopanel=new JPanel(new FlowLayout(FlowLayout.LEFT));
fopanel.add(createToolBar());
desktop = new JDesktopPane();
setJMenuBar(createMenubar());
addWindowListener(new Keretablak_figyelo(this));
getContentPane().add(fopanel,BorderLayout.NORTH);
getContentPane().add(desktop,BorderLayout.CENTER);
}
private JPanel createToolBar()
{
JToolBar toolbar=new JToolBar();
toolbar.add(play);
toolbar.add(pause);
toolbar.add(other);
toolbar.add(tasks);
JPanel panel=new JPanel(new FlowLayout(FlowLayout.LEFT));
panel.add(toolbar);
return panel;
}
private JMenuBar createMenubar()
{....... }
........
private void showTaskDisplayer()
{
TaskDisplayer taskdisplayer=new TaskDisplayer();
taskdisplayer.setVisible(true);
taskdisplayer.addInternalFrameListener(new InternalFrameListener()
{
public void internalFrameClosed(InternalFrameEvent e)
{
tasks.setEnabled(true);
}
public void internalFrameOpened(InternalFrameEvent e){}
public void internalFrameClosing(InternalFrameEvent e){}
public void internalFrameIconified(InternalFrameEvent e){}
public void internalFrameDeiconified(InternalFrameEvent e){}
public void internalFrameActivated(InternalFrameEvent e){}
public void internalFrameDeactivated(InternalFrameEvent e){}
});
desktop.add(taskdisplayer);
try
{
taskdisplayer.setSelected(true);
}
catch (java.beans.PropertyVetoException e) {
e.printStackTrace();}
}
}