gridbaglayout und modaler jdialog

Status
Nicht offen für weitere Antworten.

Bastian

Bekanntes Mitglied
ich versuche einen jdialog, dessen elemente mittels gridbaglayout angeordnet sind, modal zu setzen. allerdings ist das verhalten des dialogs mit *.setModal(true); genauso, als hätte ich es false gestellt. ist dies ein bekanntes problem mit dem gridbaglayout manager?
 
B

bygones

Gast
hat gar nix mit dem Layout zu tun... wann rufst du setModal auf ? nachdem der dialog schon sichtbar ist ?
 

Bastian

Bekanntes Mitglied
wenn ich modal vor setVisible(true) aufrufe, wird nur die titelleiste des jdialoges angezeigt (so, als ob pack() nie ausgeführt werden würde)

rufe ich es danach auf, zeigt es keine wirkung, pack() scheint aber zu funktionieren.
 

Bastian

Bekanntes Mitglied
Code:
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Suchen extends JDialog implements ActionListener {

    JLabel label;

    JTextArea eingabe;

    JTextField suchString;

    JButton weitersuchen, abbrechen;

    JCheckBox großKlein;

    JComponent suchrichtung;

    JRadioButton nachOben, nachUnten;

    String suchstring, durchsuchendenText;

    int Index = 0, cPosition = 0, cPosition1 = 0;

    GridBagLayout gbl = new GridBagLayout();

    GridBagConstraints gbc;

    public void stringSuchen(JFrame frame, JTextArea textArea) {
        this.eingabe = textArea;

        label = new JLabel("Suchen nach:");

        suchString = new JTextField();

        weitersuchen = new JButton("Weitersuchen");
        weitersuchen.addActionListener(this);

        abbrechen = new JButton("Abbrechen");
        abbrechen.addActionListener(this);

        großKlein = new JCheckBox("Groß-/Kleinschreibung");

        suchrichtung = new JPanel();
        suchrichtung
                .setBorder(BorderFactory.createTitledBorder("Suchrichtung"));
        suchrichtung.setLayout(gbl);
        ButtonGroup group = new ButtonGroup();
        nachOben = new JRadioButton("Nach oben");
        nachUnten = new JRadioButton("Nach unten");
        nachOben.addActionListener(this);
        nachUnten.addActionListener(this);
        group.add(nachOben);
        group.add(nachUnten);
        nachUnten.setSelected(true);
        gbc = makegbc(0, 0, 1, 1);
        gbc.anchor = GridBagConstraints.NORTH;
        gbc.fill = GridBagConstraints.BOTH;
        gbl.setConstraints(nachOben, gbc);
        suchrichtung.add(nachOben);

        gbc = makegbc(0, 1, 1, 1);
        gbc.anchor = GridBagConstraints.NORTH;
        gbc.fill = GridBagConstraints.BOTH;
        gbl.setConstraints(nachUnten, gbc);
        suchrichtung.add(nachUnten);

        setLayout(gbl);
        gbc = makegbc(0, 0, 1, 1);
        gbc.anchor = GridBagConstraints.WEST;
        gbc.fill = GridBagConstraints.BOTH;
        gbl.setConstraints(label, gbc);
        add(label);

        gbc = makegbc(1, 0, 3, 1);
        gbc.anchor = GridBagConstraints.NORTH;
        gbc.fill = GridBagConstraints.BOTH;
        gbl.setConstraints(suchString, gbc);
        this.add(suchString);

        gbc = makegbc(5, 0, 1, 1);
        gbc.anchor = GridBagConstraints.NORTH;
        gbc.fill = GridBagConstraints.BOTH;
        gbl.setConstraints(weitersuchen, gbc);
        this.add(weitersuchen);
        this.getRootPane().setDefaultButton(weitersuchen);

        gbc = makegbc(5, 1, 1, 1);
        gbc.anchor = GridBagConstraints.NORTH;
        gbc.fill = GridBagConstraints.BOTH;
        gbl.setConstraints(abbrechen, gbc);
        this.add(abbrechen);

        gbc = makegbc(0, 2, 2, 1);
        gbc.anchor = GridBagConstraints.SOUTH;
        gbc.fill = GridBagConstraints.BOTH;
        gbl.setConstraints(großKlein, gbc);
        this.add(großKlein);

        gbc = makegbc(2, 1, 1, 2);
        gbc.weightx = 100;
        gbc.anchor = GridBagConstraints.NORTH;
        gbc.weighty = 100;
        gbc.fill = GridBagConstraints.BOTH;
        gbl.setConstraints(suchrichtung, gbc);
        this.add(suchrichtung);

        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

        this.setResizable(false);
        this.setTitle("Suchen");
        this.setLocationRelativeTo(frame);
        this.setLocation(getX() - 200, getY() - 20);
        this.setModal(true);
        this.setVisible(true);
        this.pack();
        

    }
}
 

Illuvatar

Top Contributor
Erklärung: Wenn der Dialog modal ist, hält der Thread beim setVisible an und pack wird nicht aufgerufen - in sofern hats also sogar auch was mitm Layout zu tun ;)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben