Ich habe ein JFrame mit einem Null-Layout. Ich habe 2 JPanels über praktisch den gesamten JFrame verteilt. Ich muss aber gekegentlich ein JInternalFrame anzeigen, doch das wird nicht richtig angezeigt...
Das JDesktopPane ist schwarz und immer ganz hinten, was dazu führt, dass ich immer alles mit den beiden JPanels verdecke.
Hier mal der gesamte Code:
Da sind noch ein paar von mir geschriebene Klassen drin, die aber nicht wirklich zur Darstellung des Problems nötig sind.
So, jetzt mal meine eigentlich Frage:
Wie stelle ich _alle_ Panels dar, ohne das JDesktopPane zu verdecken?
MfG
Das JDesktopPane ist schwarz und immer ganz hinten, was dazu führt, dass ich immer alles mit den beiden JPanels verdecke.
Hier mal der gesamte Code:
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.border.EtchedBorder;
public class ScreenE extends JFrame{
private static final long serialVersionUID = 1L;
private JPanel left = new JPanel();
private JPanel right = new JPanel();
private JMenuBar menu = new JMenuBar();
private List categoryList = new List();
private File screenFiles = new File("C:\\Screens");
private JDesktopPane desktopPane = new JDesktopPane();
/**
* -Default constructor-
* Just to set up all components and show the frame
*/
public ScreenE(){
super("ScreenE");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//setLayout(null);
setLocationRelativeTo(null);
//Set up the bounds of the left box
left.setBounds(2, 2, getWidth()/7, getHeight()-60);
left.setBorder(new EtchedBorder());
left.setBackground(Color.WHITE);
left.setLayout(new BorderLayout());
add(left);
//And the size of the right box
right.setBounds(left.getWidth()+5, 2, (getWidth()/7)*6-20, getHeight()-60);
right.setBorder(new EtchedBorder());
right.setBackground(Color.WHITE);
add(right);
//add the desktopPane
//Fill the list with the categories
String[] screens = screenFiles.list(new FolderFilter());
for(String s : screens)
categoryList.add(s);
//Add the list
left.add(categoryList, BorderLayout.CENTER);
JInternalFrame fr = new JInternalFrame("INTERN", true, true, true, true);
fr.setBounds(5, 5, 200, 300);
fr.getContentPane().add(new JLabel("MUH!"));
fr.setVisible(true);
desktopPane.add(fr);
add(desktopPane);
//Set up the menu and add it to the frame
setupMenu();
//And finally, show the frame
setVisible(true);
}
public void paint(Graphics g){
left.setBounds(2, 2, getWidth()/7, getHeight()-60);
right.setBounds(left.getWidth()+5, 2, (getWidth()/7)*6-20, getHeight()-60);
super.paint(g);
}
private void setupMenu(){
JMenu datei = new JMenu("Datei");
JMenuItem newScreenshot = new JMenuItem("Neuen Screenshot aufnehmen");
JMenuItem newCategory = new JMenuItem("Neue Kategorie erstellen");
JMenuItem exit = new JMenuItem("Schließen");
exit.addActionListener(exitListener);
datei.add(newScreenshot);
datei.add(newCategory);
datei.add(exit);
menu.add(datei);
setJMenuBar(menu);
}
/**
* ***************************************************************************************
* ********************************* ActionListener **************************************
* ***************************************************************************************
*/
private ActionListener exitListener = new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
};
public static void main(String[] args) {
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception e){
e.printStackTrace();
}
new ScreenE();
}
}
Da sind noch ein paar von mir geschriebene Klassen drin, die aber nicht wirklich zur Darstellung des Problems nötig sind.
So, jetzt mal meine eigentlich Frage:
Wie stelle ich _alle_ Panels dar, ohne das JDesktopPane zu verdecken?
MfG