Hallo, ich arbeite mich ja derzeit gerade in Swing ein. Dabei bin ich mal wieder auf ein problem gestoßen, welches ich nicht so recht lösen kann bzw. ich das Vorgehen nicht verstehe.
Es geht darum, das ich vorerst ohne Aktionen eine Oberfläche ähnlich eines Formulares erstelle. Leider scheitert es schon daran, Labels und die zugehörigen TextFields ordentlich nebeneinander bzw. untereinander zu positionieren. Besondere Schwierigkeiten machen mir wahrscheinlich die LayoutManager.
Wie im Quelltext zu sehen habe ich zumindest schonmal die Navi oben angepappt. Als nächstes wollte ich die Labels mithilfe von PAGE_START auf die Linke Seite bringen, unterhalb der navi. Das klappte soweit auch gut, bis auf das letzte Label, welches links ganz am Rand, trotz der manuellen Ausrichtung, hängt. Die TextFields wollte ich in die Mitte des Fensters jeweils auf Höhe des zugehörigen labels platzieren, aber auch das endete in einem optischen Fiasko sozusagen.
Nun hatte ich mir gedacht ich baue unterhalb der Navi ein panel ein mit GridLayout, das Ergebnis könnt ihr sehen. Wie bekomme ich denn nun die Textfields in die Spalte 2 und alle Label in die Spalte 1? Und warum sind die TextFields innerhlab des neuen Panels alle gleichgroß? Muss ich die manuell Positionierung im neuen Panel vornehmen?
MfG und danke
Es geht darum, das ich vorerst ohne Aktionen eine Oberfläche ähnlich eines Formulares erstelle. Leider scheitert es schon daran, Labels und die zugehörigen TextFields ordentlich nebeneinander bzw. untereinander zu positionieren. Besondere Schwierigkeiten machen mir wahrscheinlich die LayoutManager.
Wie im Quelltext zu sehen habe ich zumindest schonmal die Navi oben angepappt. Als nächstes wollte ich die Labels mithilfe von PAGE_START auf die Linke Seite bringen, unterhalb der navi. Das klappte soweit auch gut, bis auf das letzte Label, welches links ganz am Rand, trotz der manuellen Ausrichtung, hängt. Die TextFields wollte ich in die Mitte des Fensters jeweils auf Höhe des zugehörigen labels platzieren, aber auch das endete in einem optischen Fiasko sozusagen.
Nun hatte ich mir gedacht ich baue unterhalb der Navi ein panel ein mit GridLayout, das Ergebnis könnt ihr sehen. Wie bekomme ich denn nun die Textfields in die Spalte 2 und alle Label in die Spalte 1? Und warum sind die TextFields innerhlab des neuen Panels alle gleichgroß? Muss ich die manuell Positionierung im neuen Panel vornehmen?
Java:
public class ProfFenster {
JFrame frame;
JToolBar bar;
JButton anzeigen;
JButton suchen;
JButton profAnlegen;
JButton vAnlegen;
JButton schließen;
AbstractAction myAction;
JLabel pNameL;
JLabel pKuerzelL;
JLabel pMailL;
JLabel pMzahlL;
JLabel vNameL;
JLabel vTypL;
JLabel vZeitL;
JLabel vBetreutL;
JTextField pNameT;
JTextField pKuerzelT;
JTextField pMailT;
JTextField pMzahlT;
JTextField vNameT;
JTextField vTypT;
JTextField vZeitT;
JTextField vBetreutT;
GridLayout inLay;
JPanel panel;
public ProfFenster () {
createActions();
frame = new JFrame("Uni-Verwaltung");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
bar = new JToolBar("Datei");
anzeigen = new JButton("Alle Daten anzeigen");
suchen = new JButton("Professur suchen");
profAnlegen = new JButton("Profesur anlegen");
vAnlegen = new JButton("Veranstaltung anlegen");
schließen = new JButton("Schließen");
pNameL = new JLabel("Name der Professur: ");
pKuerzelL = new JLabel("Kuerzel der Professur: ");
pMailL = new JLabel("Kontaktadresse der Professur: ");
pMzahlL = new JLabel("Mitarbeiterzahl der Professur: ");
pNameT = new JTextField(75);
pKuerzelT = new JTextField(3);
pMailT = new JTextField(75);
pMzahlT = new JTextField(2);
vNameT = new JTextField(75);
vTypT = new JTextField(10);
vZeitT = new JTextField(3);
vBetreutT = new JTextField(4);
pNameL.setBounds(10, 50, 300, 100);
pKuerzelL.setBounds(10, 75, 300, 100);
pMailL.setBounds(10, 100, 300, 100);
pMzahlL.setBounds(10, 125, 300, 100);
pNameT.setBounds(200, 50, 150, 100);
pKuerzelT.setBounds(200, 75, 3, 100);
pMailT.setBounds(200, 100, 150, 100);
pMzahlT.setBounds(200, 125, 2, 100);
bar.add(anzeigen);
bar.add(suchen);
bar.add(profAnlegen);
bar.add(vAnlegen);
bar.add(schließen);
frame.add(bar, BorderLayout.PAGE_START);
inLay = new GridLayout(5, 2);
panel = new JPanel(inLay);
panel.add(pNameL);
panel.add(pKuerzelL);
panel.add(pMailL);
panel.add(pMzahlL);
panel.add(pNameT);
panel.add(pKuerzelT);
panel.add(pMailT);
panel.add(pMzahlT);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
public static void main (String[] args) {
SwingUtilities.invokeLater(new Runnable () {
public void run () {
new ProfFenster();
}
});
}
}
MfG und danke