Anordnungsprobleme

Status
Nicht offen für weitere Antworten.
L

luckyluke

Gast
Ich habe ein großes Problem, mit dem ich mich schon ca eine Woche rumschlage.

Ich habe vor einen kleinen emailClienten mit GUI zu schreiben ( der kommandozeilen client ist schon fertig).

Dieser Client soll bewährte dreigeteilte fenster haben. Auf der linken seite Posteingang und Postausgang (zunächst).
Auf der rechten Seite oben die vorhandenen eMails und direkt darunter die jeweilige eMail, die gerade markiert ist.

Die vorhandenen eMails sollen in einem JTable dargestellt werden (das muss ich noch proggen, im Moment ist anderer Inhalt drin).

Die jeweilige eMail wird in einem JeditorPane dargestellt (im Moment wird eine index.htm geladen)

Mein Problem ist, dass er im startzustand das JeditorPane nur ca 10 pixel hochmacht und den JTable übergross. Ich hab auch schon getestet beide umzukehren (oben JeditorPane und unten Jtable), da funktioniert das komischerweise.

Hat eventuell jemand eine Lösung wie ich oben den JTable hinbekomme und unten das Jeditorpane und beide nehmen immer 50% der verfügbaren Höhe in Anspruch? (Denn bei einem resize funktionierts nämlich - dies liegt an weightx und weighty)

Hier nun der Code:

Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.swing.table.*;


public class emailClient extends JFrame implements ActionListener  {


public emailClient() {


    super("eMail Client XP");
    GridBagLayout gbl = new GridBagLayout();
    GridBagConstraints gbc = new GridBagConstraints();
    GridBagConstraints gbca = new GridBagConstraints();
    getContentPane().setLayout(gbl);
   
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setFont(new Font("Helvetica",Font.PLAIN, 14));

    
   //Erzeugen der Objekte
    JMenuBar menuBar = new JMenuBar();

    JMenu datei = new JMenu("Datei");
    JMenu bearbeiten = new JMenu("Bearbeiten");
    JMenu extra = new JMenu("Extra");
    JMenu hilfe = new JMenu("Hilfe");
    JMenuItem info = new JMenuItem("Info");
    JMenuItem optionen = new JMenuItem("Optionen");
    

   //Objekte hinzufügen
    menuBar.add(datei);
    menuBar.add(bearbeiten);
    menuBar.add(extra);
    menuBar.add(hilfe);
    hilfe.add(info);
    extra.add(optionen);

    setJMenuBar(menuBar);

    
   TableModel dataModel = new AbstractTableModel() {
   public int getColumnCount() { return 10; }
   public int getRowCount() { return 5;}
   public Object getValueAt(int row, int col) { return new Integer(row*col); }
   };

    JLabel label = new JLabel("this is a test");
    gbc.weightx = 0.25;
    gbc.weighty = 1.0;
    gbc.fill = GridBagConstraints.BOTH;
    gbc.insets = new Insets(1,1,1,1);
    gbc.gridy = 0;
    gbc.gridx = 0;
    gbc.gridheight = 2;
    gbc.gridwidth = 1;
    getContentPane().add(Label, gbc);    
    
    JTable table = new JTable(dataModel);
    gbc.weightx = 1.0;
    gbc.weighty = 1.0;
    gbc.fill = GridBagConstraints.BOTH;
    gbc.insets = new Insets(1,1,1,1);
    gbc.gridy = 0;
    gbc.gridx = 1;
    gbc.gridheight = 1;
    gbc.gridwidth = 1;
    getContentPane().add(new JScrollPane(table), gbc);

    JEditorPane editorPane = new JEditorPane();
    editorPane.setContentType("text/html");    
    editorPane.setEditable(false);
    try {
     editorPane.setPage("file:///C:/index.htm");
        } 
    catch (IOException ex) {
     System.out.println("Kann die Ressource  nicht laden.");
     System.exit(0);
        }    
    gbca.weightx = 1.0;    
    gbca.weighty = 1.0;
    gbca.fill = GridBagConstraints.BOTH;
    gbca.insets = new Insets(1,1,1,1);
    gbca.gridy = 1;
    gbca.gridx = 1;
    gbca.gridheight = 1;
    //gbca.gridwidth = GridBagConstraints.RELATIVE;
    getContentPane().add(new JScrollPane(editorPane), gbca);








setSize(800, 550);

   //Action Listener Befehle hinzufügen
    info.setActionCommand("info");
    info.addActionListener(this);
    setVisible(true);
  }

  public void actionPerformed(ActionEvent e) {
   if (e.getActionCommand()=="info") {
    System.out.println("test");
     }
  }


 public static void main(String args[]) 
  {
   new emailClient();
  }
}
 
L

luckyluke

Gast
Das löst leider nicht mein Problem (hab ich mir schon durchgelesen) denn bei mir ist es ja so, dass es bei Maximierung stimmt und nicht umgekehrt.
 
L

luckyluke

Gast
hrhr :D ich war nochmal in der Bibliothek

hab eine tolle Möglichkeit gefunden (BorderLayout)

einfach immer weiter ineinander schachteln

Code:
   JScrollPane scrollpane = new JScrollPane(new JLabel("this is a test"));
   scrollpane.setBorder(BorderFactory.createEtchedBorder());
   scrollpane.setPreferredSize(new Dimension(200, 100));
 
   JTable table = new JTable(dataModel);
   JScrollPane scrollpane1 = new JScrollPane(table);
   scrollpane1.setBorder(BorderFactory.createEtchedBorder());
   scrollpane1.setPreferredSize(new Dimension(500, 100));  

   JScrollPane scrollpane2 = new JScrollPane(editorPane);
   scrollpane2.setBorder(BorderFactory.createEtchedBorder());

   splitpane1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,scrollpane,scrollpane1);
   splitpane1.setOneTouchExpandable(true);
   splitpane2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,splitpane1,scrollpane2);
   splitpane2.setOneTouchExpandable(true);
   getContentPane().add(splitpane2,BorderLayout.CENTER);

Trotzdem Danke für Eure Bemühungen [schild=1 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]goil ![/schild]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben