wybór pliku po naciśnięciu JButton, co robię źle?

Odpowiedz Nowy wątek
2019-06-10 19:09
0

Witam. Mam problem z dodaniem do swojego programu prostej opcji. Chciałbym żeby to wyglądało mniej więcej tak: Tworzę okienko w JFrame, i po naciśnięciu przycisku pobierz plik, pojawia się opcja wyboru pliku, który ma potem trafić do programu. Zrobiłem to tak:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import MyFrame6.RownanieGUI;
import edu.duke.FileResource;

public class VigenereGUI extends JFrame implements ActionListener {

    private JLabel lSource;
    private JButton bGetFile, bDecipher;
    private JTextField tOutput;

    public VigenereGUI() 
    {
        setSize(600,400);
        setTitle("Szyfr Wiginera - kodowanie i łamanie");
        setLayout(null);

        lSource = new JLabel("Podaj źródło:");
        lSource.setBounds(10,30,100,20);
        add(lSource);

        bGetFile = new JButton("Pobierz plik");
        bGetFile.setBounds(10,60,120,20);
        add(bGetFile);
        bGetFile.addActionListener(this);

        bDecipher = new JButton("Rozszyfruj");
        bDecipher.setBounds(150,60,120,20);
        add(bDecipher);
        bGetFile.addActionListener(this);

        tOutput = new JTextField("");
        tOutput.setBounds(10,90,400,250);
        add(tOutput);   

    }

    public void actionPerformed(ActionEvent e) 
    {
    Object source = e.getSource();

    if(source==bGetFile) 
    {

        FileResource fr = new FileResource();
    }

    }

    public static void main(String[]args) 
    {
        VigenereGUI app = new VigenereGUI();
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        app.setVisible(true);       

    }
}

Po naciśnięciu "pobierz plik" wywala mi błędy, które zaczynają się tak:

Exception in thread "AWT-EventQueue-0" java.lang.Error: Cannot call invokeAndWait from the event dispatcher thread at java.awt.EventQueue.invokeAndWait(EventQueue.java:1331) at java.awt.EventQueue.invokeAndWait(EventQueue.java:1324) at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1353) at edu.duke.FileSelector.selectFiles(FileSelector.java:89)

Ktoś mi może podpowiedzieć o co chodzi? Jak wywołuję FireResource w klasie main, to wszystko działa jak powinno. Może z resztą jest jakiś inny lepszy sposób na wybór pliku.

Pozostało 580 znaków

2019-06-10 19:21
2
  1. A może pokażesz kod który powoduje błąd? o_O Zgaduje że to twoje FileResource chciało być sprytne i wrzucić coś do kolejki even dispatchera, ale że robisz to z wątku event dispatchera to masz deadlock, bo czekasz aż ten event się przetworzy, ale nie przetworzy sie nigdy bo czekając blokujesz wątek którzy przetwarza eventy.
  2. public class VigenereGUI extends JFrame implements ActionListener { mały kotek ginie za każdym razem jak ktoś tak robi. Zrób OSOBNĄ klasę action listenera dla każdego buttona, a nie takie dziwolągi i potem ify w actionPerformed żeby sprawdzić który guzik ktoś wcisnał

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0