Witam napotkalem problem, ktorego sam raczej nie bede w stanie rozwiazac, dlatego chcialbym zaczerpnac waszych pomyslow.
Ponizszy kod uruchamia okienko, ktore ma jako Label Background i w ktorym mozna wpisac haslo.
Po wpisaniu poprawnego hasla chcialem, aby uruchomil sie JProgressBar. Gdy wpisze poprawne haslo
to musze odczekac te kilka sekund (ktore normalnie potrzebuje JProgressBar), jednak nie wyswietla
mi sie pasek postepu.
(Probowalem zdefiniowac pasek wczesniej i potem juz w ActionListener ten kod z while , ale tez nie dzialalo - wyswietlilo chyba tylko pasek wtedy gdy jut bylo 100%) .
Interesuje mnie rowniez taka sprawa, ze po wpisaniu haselka metoda password.setVisible(false); ,ktora powinna zostac wykonana na samym poczatku, jest wykonywano dopiero po zakonczeniu procesu z JProgressBar.
(Ostatnie pytanie, ktore nie gra wiekszej roli, ale chialem zapytac z ciekawosci.
Gdy uzyje metody password.setFont(new Font( "",Font.PLAIN, 14)); to programm strasznie sie powoli laduje. Ponadto JPasswordField sie nie wyswietla automatcznie. Trzeba kliknac w obszar gdzie sie znajduje, aby sie pojawil )
W kodzie miejsca ktore opisalem powyzej oznaczylem "Tutaj jest problem".
public class Klasa4 extends JFrame{
static JFrame frame = new JFrame("Id");
static JLabel a = new JLabel();
static private String pass = "WX23";
static int num = 0;
static JProgressBar progressBar ;
static JPasswordField password = new JPasswordField("Haslo",10);
Klasa4(){
frame.setLayout(null);
frame.setSize(600,300);
frame.setVisible(true);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Toolkit toolkit = getToolkit();
Dimension size = toolkit.getScreenSize();
frame.setLocation(size.width/2 - frame.getWidth()/2,size.height/2 - frame.getHeight()/2);
a.setIcon(new ImageIcon("Desert.jpg"));
a.setBounds(0,0,600,300);
frame.add(a);
password.setEchoChar('*');
password.setBounds(270,240,60,15);
// password.setFont(new Font( "",Font.PLAIN, 14)); tutaj jest problem
frame.add(password);
password.addActionListener(new Action());
}
static class Action implements ActionListener{
public void actionPerformed(ActionEvent e) {
JPasswordField input = (JPasswordField)e.getSource();
char[] passy = input.getPassword();
String p = new String(passy);
if(p.equals(pass)){
password.setVisible(false); tutaj jest problem
frame.setCursor(Cursor.WAIT_CURSOR);
progressBar = new JProgressBar(0,3000); tutaj jest problem
progressBar.setBounds(20,30,100,20);
progressBar.setValue(0);
progressBar.setStringPainted(true);
frame.add(progressBar);
while (num < 3000) {
progressBar.setValue(num);
try {
Thread.sleep(100);
} catch (InterruptedException ere) {
}
num += 10;
}
frame.setCursor(Cursor.DEFAULT_CURSOR);
}
else{
Icon be = new ImageIcon("passw.png");
JOptionPane.showMessageDialog (null, "Haslo niepoprawne", "WSXP", 2 , be);
}
}
}
}
Z gory wielkie dzieki!!!