Witam,
Podczas pracy programu chciałbym, aby wyświetlało się drugie okno informujące o tym, że wykonywana jest jakaś czasochłonna operacja (wiem, że do tego mogę użyć ProgressBar, ale na razie nie w tym problem). Co zrobić, aby okno z informacją, że program coś liczy, było wyświetlane w "prawidłowy" sposób, bo jak na razie jest przezroczyste, a dopiero po wykonaniu się danych obliczeń wyświetla się prawidłowo. Przypuszczam, że trzeba coś pokombinować z wątkami, ale na razie nie doszedłem jeszcze jak się do tego zabrać.
Poniższy przykładowy kod w pełni obrazuje mój problem:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Abc
{
public static void main(String args[])
{
new Okno1();
}
}
class Okno1 extends JFrame implements ActionListener
{
public Okno1()
{
setSize(200,200);
setLayout(null);
setTitle("Okno glowne");
setDefaultCloseOperation(3);
setVisible(true);
JButton dodaj=new JButton("Dodaj");
dodaj.setBounds(25,25,100,25);
add(dodaj);
dodaj.addActionListener(this);
}
public void actionPerformed(ActionEvent akcja)
{
Okno2 start=new Okno2();
start.utworz();
int i=0;
while(i<10)
{
start.czekaj();
i++;
}
start.zamknij();
}
}
class Okno2 extends JFrame
{
public void utworz()
{
setSize(200,100);
setLayout(null);
setTitle("Czekaj...");
setDefaultCloseOperation(1);
setVisible(true);
JLabel nazwa=new JLabel("Czekaj...");
nazwa.setBounds(25,25,120,25);
add(nazwa);
}
public void czekaj()
{
try
{
Thread.sleep(500);
}
catch(InterruptedException e)
{
}
}
public void zamknij()
{
dispose();
}
}
..aaa i jeszcze jedno.
Jeśli poniższy listing wyrzuce z nasłuchu i dodam np. do maina to jest wszystko ok, dlaczego?
...
Okno2 start=new Okno2();
start.utworz();
int i=0;
while(i<10)
{
start.czekaj();
i++;
}
start.zamknij();
...