tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
720
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    HeinerPyt HeinerPyt ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Beiträge
    180
    Hi,

    Ich habe eine Oberfläche mit 3 Panel erstellt. (sieh code)

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    
     
    package Astronomie;
     
    import java.awt.*;
     
    import javax.swing.*;
     
     
     
    //-------------------------------------------------------------------------
    //- Diese Klasse berechnet das julianische Datum                          -
    //-------------------------------------------------------------------------
     
     
     
    public class julianisch extends JFrame
    {
        public julianisch( int x, int y )
        {
            setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); 
            setSize( x, y ); 
            Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
            setLocation( (d.width  - getSize().width ) / 2, 
                         (d.height - getSize().height) / 2 ); 
          } 
         
          public static void init_window() 
          { 
     
                JFrame win = new julianisch(400,300);
                win.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                win.setTitle("Berechnet Julianisches Datum");
     
                Panel panel1 = new Panel();
                panel1.setBackground(Color.BLACK);
                panel1.setLayout(new GridLayout(3,2));
                
                JLabel L1 = new JLabel("Jahreszahl:");
                JLabel L2 = new JLabel("Monat:");
                JLabel L3 = new JLabel("Tag:");
                JLabel L4 = new JLabel("Ergebnis:");
                
                L1.setFont(new Font("Serif",Font.BOLD,20));
                L1.setForeground(Color.MAGENTA);
                L2.setFont(new Font("Serif",Font.BOLD,20));
                L2.setForeground(Color.MAGENTA);
                L3.setFont(new Font("Serif",Font.BOLD,20));
                L3.setForeground(Color.MAGENTA);
                L4.setFont(new Font("Serif",Font.BOLD,20));
                L4.setForeground(Color.RED);
                
                JTextField TJahr = new JTextField(10);
                JTextField TMonat = new JTextField(10);
                JTextField TTag = new JTextField(10);
                JTextField TErg = new JTextField(10);
                
                JButton BEnd = new JButton("Ende");
                JButton BRech = new JButton("Berechnen");
                
                
                panel1.add(L1);
                panel1.add(TJahr);
                panel1.add(L2);
                panel1.add(TMonat);
                panel1.add(L3);
                panel1.add(TTag);
                
                Panel panel2 = new Panel();
                panel2.setLayout(new GridLayout(1,1));
                panel2.add(L4);
                panel2.add(TErg);
                
                Panel panel3 = new Panel();
                panel3.setLayout(new BorderLayout());
                panel3.add(BRech, BorderLayout.WEST);
                panel3.add(BEnd, BorderLayout.EAST);
                
                win.setLayout(new GridLayout(3,1));         
                win.add(panel1);
                win.add(panel2);
                win.add(panel3);
    //          win.pack();
                win.setVisible( true ); 
          }
    }

    Die oberen 3 Zeilen (panel1) werden korrekt dargestellt. Das Panel 2 wird das Ergebnisfeld sehr hoch dargestellt, ebenso wie die beiden Buttons in Panel 3.

    Ich vermute mal das liegt an dem layoutManger für das win. Gibt es eine Möglichkeit wie ich für jede Komponente innerhalb des Windows die Höhe und Breite (eventuell die Position) seperat darstellen kann? Wenn ja wie?

    Danke
    Heiner
     

  2. #2
    Andibert Andibert ist offline Mitglied Silber
    Registriert seit
    Sep 2006
    Ort
    Hildesheim
    Beiträge
    90
    Ja liegt es!

    Das GridLayout gibt den drei Panels genau gleich viel Platz, dadurch sind Die Komponenten in den leereren Pannels größer.

    Intreressant für dich könnten Group oder Box Layout sein. Die sind zwar etwas komplizierter, ermöglichen aber mehr Freiheiten.

    Grid Layout solltets du nur verwenden wenn alle enthaltenen Komponenten gleich groß sein sollen.

    Oft bietet sich auch ein BorderLayout an, wobei du hier beachten musst dass die Komponenten an unterschiedlichen Positionen unterschiedlich stark resized werden.
     
    There are 10 kind of people, those who understand binary and those who don't.

  3. #3
    FrankBooth FrankBooth ist offline Mitglied Gold
    Registriert seit
    Sep 2008
    Ort
    Osnabrück (Niedersachsen)
    Beiträge
    244
    Sehr vielseitig ist das TableLayout. Musst du aber importieren. Es gibt viele Tutorials dazu, wie man es benutzt. Das bekanntest Tutorial ist denk ich TableDancer.
     

  4. #4
    d4rkY89 d4rkY89 ist offline Mitglied Silber
    Registriert seit
    May 2008
    Beiträge
    72
    Falls du aber das Layout nicht ändern möchtest sondern nur die Größe der Buttons festlegen willst, kannst du das auch ganz simpel über "button.setPrefferedSize( new Dimension( [breite], [höhe] ) )" machen. Wenn's damit nicht klappt versuch es mit setMaximumSize( new Dimension( [breite], [höhe] ) )
     

  5. #5
    Andibert Andibert ist offline Mitglied Silber
    Registriert seit
    Sep 2006
    Ort
    Hildesheim
    Beiträge
    90
    Nein klappt es nicht.
    Das Gridlayout ignoriert Größenangaben
     
    There are 10 kind of people, those who understand binary and those who don't.

  6. #6
    HeinerPyt HeinerPyt ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Beiträge
    180
    Hört sich nicht schlecht an.

    Zitat Zitat von FrankBooth Beitrag anzeigen
    Sehr vielseitig ist das TableLayout. Musst du aber importieren. Es gibt viele Tutorials dazu, wie man es benutzt. Das bekanntest Tutorial ist denk ich TableDancer.
    Wenn du mir jetzt noch sagen kannst wie ich den in Eclipse verwende binich wunschlos glücklich. Habe die Tablelayout.jar runtergeladen.
     

Ähnliche Themen

  1. Prozedur zu groß
    Von CrimeTime im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 30.12.06, 21:54
  2. gif zu groß, bei ae
    Von emulsion im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 0
    Letzter Beitrag: 14.02.05, 13:18
  3. Datei zu groß?
    Von VinceJack im Forum PHP
    Antworten: 2
    Letzter Beitrag: 11.01.05, 16:17
  4. Panel ist zu groß sollte nur so groß sein wie das Rechteck
    Von downset04 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 11.01.05, 10:23
  5. Image Buttons als Submit-Buttons
    Von Stefcore im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 10.04.02, 10:20