G
Guest
Gast
Hallo,
ich hab das folgende Programm :
Die einzelnen Sachen werden jeweils in Methoden initialisiert, wie Tabelle usw. . Wenn ich dieses Fenster minimiere und aus der Taskleite maximiere, klappt alles wunderbar. Wenn ich aber eine Zeile in der JTable auswähle und das Fesnter dann minimieren und anschließend maximiere, ist das Menu, der linke Panel, die Tabelle verschwunden. Ich muss nun das Fenster oben ( das blaue ) doppelt anklicken, dann geht es wieder, hat einer eine Idee wieso ?
ich hab das folgende Programm :
Code:
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.Font;
import java.util.Vector;
public class GuiFrame extends JFrame implements WindowListener{
private static final long serialVersionUID = 7397942068140978283L;
// Panel für die Mails und den Account
private JPanel frame_panel = new JPanel();
// Panel für die Mails
private JPanel mail_panel = new JPanel();
// Panel für den Account
private JPanel account_panel = new JPanel();
// Mail/Account Panel werden durch ein JSplitPane getrennt
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, account_panel,mail_panel);
// Informationen für die Tabelle
private Vector label = new Vector(); //{ " ","Absender","Betreff","Datum","Größe"," "};
// Model für die Tabelle
private DefaultTableModel table_model = new DefaultTableModel( label, 0 );
// Die JTable für die Mails
private JTable mail_table = new JTable(table_model){
public Component prepareRenderer(
TableCellRenderer renderer, int row, int column) {
Component component = super.prepareRenderer(renderer, row, column);
this.setGridColor(new Color(217,217,217));
if (!this.isRowSelected(row)) {
component.setBackground(row % 2 == 0 ? new Color(237,243,254) : null );
component.setForeground(Color.BLACK);
component.setFont(new Font("Verdana",Font.PLAIN,12));
}else if(this.isRowSelected(row)){
component.setBackground(new Color(61,128,223));
component.setForeground(Color.WHITE);
component.setFont(new Font("Verdana",Font.BOLD,12));
}
return component;
}
};
/**
* Das Menü
*
*@version 0.1
*/
private JMenuBar menubar = new JMenuBar();
private JMenu einstl = new JMenu("Einstellungen");
private JMenu lookfeel = new JMenu("Look&Feel");
/**
* Mit diesem MenuItem ist es möglich, sich das Menu für die Auswahl
* des Look&Feel wieder anzeigen zu lassen.
*/
private JMenuItem op_anzei = new JMenuItem("Optionen anzeigen");
/**
* Mit diesem MenuItem ist es möglich, das aktuelle Look&Feel
* als Standard zu definieren.
*/
private JMenuItem behalten = new JMenuItem("Look&Feeld beibehalten");
private Font menuFont = new Font("Arial",Font.PLAIN,12);
public GuiFrame() {
super("Jowak Mail Client");
this.initMenu();
this.initTable();
this.initGuiFrame(); // Initialisiert erstmal das Grundgerüst des Fensters
}
/**
* Diese Methode initialisiert das Menu des des E-Mail Clients
*
* @version 0.1
*/
private void initMenu(){
// Schriftart setzen
this.lookfeel.setFont(menuFont);
this.einstl.setFont(menuFont);
this.op_anzei.setFont(menuFont);
this.behalten.setFont(menuFont);
this.menubar.setFont(menuFont);
this.lookfeel.add(op_anzei);
this.lookfeel.add(behalten);
this.einstl.add(lookfeel);
this.menubar.add(einstl); // Menu Pünkt EXTRAS einfügen
this.setJMenuBar(menubar);
}
/**
* Diese Methode initialisiert das Grundgerüst für den E-Mail Client.
*
* @version 0.1
*/
private void initGuiFrame(){
this.splitPane.setDividerLocation(150);
this.splitPane.setDividerSize(8);
this.setVisible(true);
this.setLayout(new BorderLayout());
this.add(splitPane,BorderLayout.CENTER);
this.addWindowListener(this);
}
/**
* Hier wird die JTable für die Mails initialisiert
*
* @version 0.1
*
*/
private void initTable(){
// Die Überschriften für die Tabelle mit den E-Mail
this.label.add(new String(" "));
this.label.add(new String("Absender"));
this.label.add(new String("Betreff"));
this.label.add(new String("Datum"));
this.label.add(new String("Größe"));
Vector tmpVec = new Vector();
Vector mailVec = new Vector();
tmpVec.add(new String("BILD"));
tmpVec.add(new String("Abensder"));
tmpVec.add(new String("Betreff"));
tmpVec.add(new String("Datum"));
tmpVec.add(new String("Größe"));
mailVec.add(tmpVec);
tmpVec = new Vector();
this.table_model.setDataVector(mailVec,label);
this.table_model.setColumnIdentifiers(this.label);
this.mail_panel.setLayout(new BorderLayout());
this.mail_panel.add(new JScrollPane(this.mail_table),BorderLayout.CENTER);
}
/**
*
*/
public void windowClosing( WindowEvent event ) {
System.exit( 0 );
}
public void windowClosed( WindowEvent event ) {}
public void windowDeiconified( WindowEvent event ) {}
public void windowIconified( WindowEvent event ) {}
public void windowActivated( WindowEvent event ) {
this.setVisible(true);
}
public void windowDeactivated( WindowEvent event ) {
}
public void windowOpened( WindowEvent event ) {
}
public static void main(String[] args) {
GuiFrame frm = new GuiFrame();
frm.setVisible(true);
frm.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
}
Die einzelnen Sachen werden jeweils in Methoden initialisiert, wie Tabelle usw. . Wenn ich dieses Fenster minimiere und aus der Taskleite maximiere, klappt alles wunderbar. Wenn ich aber eine Zeile in der JTable auswähle und das Fesnter dann minimieren und anschließend maximiere, ist das Menu, der linke Panel, die Tabelle verschwunden. Ich muss nun das Fenster oben ( das blaue ) doppelt anklicken, dann geht es wieder, hat einer eine Idee wieso ?