Swing BoxLayout ein JTextfield wird falsch positioniert

  • Themenstarter Themenstarter Finwe8
  • Beginndatum Beginndatum
F

Finwe8

Gast
Hallo,
ich habe folgendes Problem und finde keine Lösung:

Unzwar wird bei mir ein JTextfield anders positioniert als Buttons, was ich nicht haben möchte.

Hier erstmal der Code "this" ist ein JFrame:

Java:
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        this.setAlwaysOnTop(true);
        this.setTitle("Save Sessions");
        this.setSize(400, 400);
        this.setMinimumSize(new Dimension(400,250));
        this.setLocationRelativeTo(containingFrame);

        infoLabel = new JLabel("Name for new Session :");
        infoLabel.setPreferredSize(new Dimension(150,25));
        infoLabel.setMaximumSize(new Dimension(150,25));
        infoLabel.setMinimumSize(new Dimension(150,25));
        
        newNameTextField = new JTextField();
        newNameTextField.setPreferredSize(new Dimension(150,25));
        newNameTextField.setMaximumSize(new Dimension(150,25));
        newNameTextField.setMinimumSize(new Dimension(150,25));        

        saveButton = new JButton();
        saveButton.addActionListener(new SaveButtonListener());
        saveButton.setText("Save");
        saveButton.setPreferredSize(new Dimension(150,25));
        saveButton.setMaximumSize(new Dimension(150,25));
        saveButton.setMinimumSize(new Dimension(150,25));
        saveButton.setEnabled(false);

        cancelButton = new JButton();
        cancelButton.addActionListener(new CancelButtonListener());
        cancelButton.setText("Cancel");
        cancelButton.setPreferredSize(new Dimension(150,25));
        cancelButton.setMaximumSize(new Dimension(150,25));
        cancelButton.setMinimumSize(new Dimension(150,25));

        listModel = new DefaultListModel();

        savedSessionsList = new JList(listModel);
        savedSessionsList.setLayoutOrientation(JList.VERTICAL);
        savedSessionsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        savedSessionsList.addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent e) {
                if (!e.getValueIsAdjusting()) {
                    if (savedSessionsList.getSelectedIndex() == -1
                        && newNameTextField.getText() == "") {
                        saveButton.setEnabled(false);
                    } else {
                        newNameTextField.setText((String) savedSessionsList
                            .getSelectedValue());
                        saveButton.setEnabled(true);
                    }
                }
            }
        });

        scrollPane = new JScrollPane(savedSessionsList);
        scrollPane.setPreferredSize(new Dimension(200, 300));

        for (Session session : SessionPersistence.readSessions()) {
            listModel.addElement(session.getName());
        }
        
        
        JPanel scrollPanePanel = new JPanel();
        scrollPanePanel.setLayout(new BoxLayout(scrollPanePanel, BoxLayout.PAGE_AXIS));
        scrollPanePanel.add(scrollPane);
        scrollPanePanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
        
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.PAGE_AXIS));
        buttonPanel.add(infoLabel);
        buttonPanel.add(Box.createRigidArea(new Dimension(0,5)));
        buttonPanel.add(newNameTextField);
        buttonPanel.add(Box.createRigidArea(new Dimension(0,20)));
        buttonPanel.add(saveButton);
        buttonPanel.add(Box.createRigidArea(new Dimension(0,20)));
        buttonPanel.add(cancelButton);
        buttonPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
        
        Container container = this.getContentPane();
        container.add(scrollPanePanel,BorderLayout.CENTER);
        container.add(buttonPanel, BorderLayout.EAST);
        
        this.pack();

Die Anzeige sieht folgerndermaßen aus (da ich hier kein Bild hochladen kann schematisch) :

| scrollPane..............|infoLabel......|....|
| scrollPane........|JTextfield...|............|
| scrollPane..............|saveButton...|....|
| scrollPane..............|cancelButtion|....|
| scrollPane.......................................|
| scrollPane.......................................|
| scrollPane.......................................|


Ich finde dafür überhaupt keine sinnvolle erklärung, da ich die Buttons, das Label und das Textfield gleich behandele!?

Hat jemand eine Idee?
Vielen dank schonmal!
 
Hallo,

probier mal beim Textfeld ein setAlignmentX(Component.LEFT_ALIGNMENT);
Kann sein, dass JTextfield im gegensatz zu JButton nicht standardmäßig links ausgerichtet ist.

Gruß,
Wraithyle
 

Zurück
Oben