Problemi con la gestione della JDialog

michele.b26

Nuovo Utente
18 Dic 2008
27
0
0
Ciao a tutti, ho un problema con le Swing di Java. Ho provato a cercare in giro se anche qualcun'altro avesse già avuto il mio stesso problema, ma non ho trovato nulla.

Quello che devo fare è un programma che dati dei nominativi mi elabori un file di input e mi restituisca i risultati in un file di output, e mentre lavora vorrei disegnare una finestra che chieda all'utente di aspettare finché l'elaborazione non sia terminata.

Il problema è che non mi disegna la finestra di avviso e non riesco a capire come mai. Vi allego ciò che mi visualizza durante l'elaborazione.

Di seguito vi posto il codice della finestra di avviso:

Codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MsgAvviso extends JDialog implements ActionListener {

    private GridBagLayout gridbag = new GridBagLayout();
    private GridBagConstraints constraints = new GridBagConstraints();
    private JLabel lblMessage = new JLabel();
    private JButton button = new JButton("OK");
    private GestioneImmagini img = new GestioneImmagini("images/exclamation-icon2.jpg");
    public MsgAvviso(JFrame parent, String title, String message) {
        super(parent, title, false);
        if (parent != null) {
            Dimension parentSize = parent.getSize();
            Point p = parent.getLocation();
            setLocation(p.x + parentSize.width / 8, p.y + parentSize.height / 4);
        }
        setLayout(gridbag);
        lblMessage = new JLabel(message);

        constraints.fill = GridBagConstraints.NONE;
        constraints.anchor = GridBagConstraints.CENTER;

        buildConstraints(constraints, 0, 0, 1, 1, 30, 50);
        gridbag.setConstraints(img, constraints);
        add(img);

        buildConstraints(constraints, 1, 0, 1, 1, 70, 0);
        gridbag.setConstraints(lblMessage, constraints);
        add(lblMessage);

        buildConstraints(constraints, 0, 1, 2, 1, 100, 50);
        gridbag.setConstraints(button, constraints);
        add(button);

        button.addActionListener(this);

        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        pack();
        setSize(600,200);
        setResizable(false);
        setVisible(true);
    }

    private void buildConstraints
            (
            GridBagConstraints gbc,
            int gx, int gy,
            int gw, int gh,
            int wx, int wy
            )
    {
        gbc.gridx = gx;
        gbc.gridy = gy;
        gbc.gridwidth  = gw;
        gbc.gridheight = gh;
        gbc.weightx = wx;
        gbc.weighty = wy;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        setVisible(false);
        dispose();
    }
}

e il codice relativo alla chiamata della finestra:

Codice:
private void btnCalcolaActionPerformed(ActionEvent evt){
	btnCalcola.setEnabled(false);
	messaggioAvviso = new MsgAvviso(this, "Attendi", "Attendi, sto calcolando...");

	// Legge file in input, lo elabora e restituisce in un file di output i risultati

	System.out.println("\n\n\nElaborazione finita.\n\n\n");
	messaggioAvviso.setVisible(false);
	messaggioAvviso.dispose();
}

I file che deve leggere sono piuttosto grandi, circa 65 MB di file di testo.

Non capisco perché non finisca di disegnare la finestra prima di iniziare ad elaborare il file.

Vi ringrazio per ogni aiuto.
 

Allegati

  • screenshot.png
    screenshot.png
    37,6 KB · Visite: 403

Discussioni simili