tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Akeshihiro
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
444
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    chuvak chuvak ist offline Mitglied Brokat
    Registriert seit
    Mar 2005
    Beiträge
    311
    Ich bin gerade dabei, einen einfachen Prototypen zu Designen, doch leider scheitere ich bereits bei der Positionierung.
    Ich möchte das JPanel pCustomer im CENTER ausrichten, worauf es leider völlig verschwindet. Wenn ich es z.B. nach SOUTH verschiebe, wird es komischerweise angezeigt (Zeile 49).
    Wenn ich die Zeilen 62-64 entferne, funktioniert alles.

    Angepasste Darstellung:
    Code java:
    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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
     
    public class Test extends JPanel implements ActionListener {
     
        private JPanel pTop = new JPanel();
        private JPanel pMenue = new JPanel();
        private JPanel pContent = new JPanel();
        private JPanel pCustomer = new JPanel();
        private JPanel pEnq = new JPanel();
        private JPanel pCustomerMenue = new JPanel();
        private JTextField tf1 = new JTextField();
        private JButton bCustomer = new JButton("Customer");
        private JButton bEnq = new JButton("Product");
        private JButton bCNew = new JButton("New Customer");
        private JLabel lCustomer = new JLabel("Customer");
        String[] customerString = {"--- SELECT -- ", "New Customer", "Edit Customer", "Delete Customer"};
        private JComboBox cb1 = new JComboBox(customerString);
        private JLabel lRes = new JLabel();
        String[] productString = {"--- SELECT -- ", "Sell Product", "Enquire Product", "Complain Product"};
        private JLabel lWelcome = new JLabel("Welcome to our System!");
        private JLabel lNo = new JLabel("Customer Number:   ");
        private JLabel lEnq = new JLabel("Enquiry");
     
        public Test() {
            this.setLayout(new BorderLayout());
     
            // pTop
            this.add(pTop, BorderLayout.NORTH);
            pTop.setLayout(new BorderLayout());
            pTop.add(lNo, BorderLayout.WEST);
            pTop.add(tf1, BorderLayout.CENTER);
     
            // pMenue
            this.add(pMenue, BorderLayout.WEST);
            pMenue.setLayout(new GridLayout(5, 1));
            pMenue.add(bCustomer);
            pMenue.add(bEnq);
     
            // pContent        
            this.add(pContent, BorderLayout.CENTER);
            pContent.add(lWelcome);
            pContent.setLayout(new BorderLayout());
            
            pContent.setBackground(Color.GREEN);
     
            // pCustomer
            pContent.add(pCustomer, BorderLayout.CENTER); // EAST, SOUTH, WEST funktioniern hier; ich möchte es aber zentriert haben.
            pCustomer.add(cb1);
            pCustomer.add(lRes);
            pCustomer.setVisible(false);
            pCustomer.setBackground(Color.blue);
     
            // pCustomerMenue
            pContent.add(pCustomerMenue, BorderLayout.NORTH);
            pCustomerMenue.add(bCNew);
            pCustomerMenue.setVisible(false);
            pCustomerMenue.setBackground(Color.red);
     
            // pEnq
            pContent.add(pEnq, BorderLayout.CENTER);
            pEnq.add(lEnq);
            pEnq.setVisible(false);
     
            // ---
     
            bCustomer.addActionListener(this);
            bEnq.addActionListener(this);
        }
     
        @Override
        public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
            lWelcome.setVisible(false);
     
            if (source == bCustomer) {
                init();
                pCustomer.setVisible(true);
                pCustomerMenue.setVisible(true);
                bCustomer.setEnabled(false);
            }
            if (source == bEnq) {
                init();
                pEnq.setVisible(true);
                bEnq.setEnabled(false);
            }
        }
     
        public void init() {
            pCustomer.setVisible(false);
            pCustomerMenue.setVisible(false);
            pEnq.setVisible(false);
            bCustomer.setEnabled(true);
            bEnq.setEnabled(true);
        }
    }

    Sieht jemand den Fehler?
    Vielen Dank!
    Geändert von chuvak (29.12.11 um 15:19 Uhr) Grund: Code angepasst
     
    "Ein Pessimist ist ein Optimist mit Erfahrung."

  2. #2
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Das Problem ist
    Code java:
    1
    2
    3
    4
    
    // pEnq
            pContent.add(pEnq, BorderLayout.CENTER);
            pEnq.add(lEnq);
            pEnq.setVisible(false);
    Beim BorderLayout können nur genau fünf Objekte verwaltet werden, und zwar für jede Himmelsrichtung und die Mitte. Wenn an einer Stelle ein neues Objekt eingefügt wird, dann wird das nicht hinzugefügt, sondern es ersetzt das alte! Und der Code macht eben genau das. Das Panel pCustomer wird quasi weggeworfen und durch pEnq ersetzt, daher geht das auch nicht.

    Da wirst du dir wohl was anderes überlegen müssen.
    chuvak bedankt sich. 
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 18.08.10, 11:53
  2. Problem Center-Bereich BorderLayout und Checkboxes als Tabellenspalte
    Von Kaastn im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 12.03.07, 12:25
  3. Antworten: 3
    Letzter Beitrag: 16.02.07, 17:29
  4. Antworten: 3
    Letzter Beitrag: 11.05.06, 20:55
  5. 5.1 System, Center und Rear/Right sind "gekoppelt"
    Von DrEvil im Forum Audiotechnik, Recording & Audio-Software
    Antworten: 1
    Letzter Beitrag: 07.01.05, 21:58

Stichworte