1

Тема: Робота з JFrame

Я новичок в Java, тому потрібна допомогою. На формі є кнопка, при натисканні на яку повинна відкриватись інша форма, але скільки б разів я не натискав на форму стільки ж буде створено нових форм. Як цьому запобігти? Як зробити так, щоб поки одна форма активна інший екземпляр не використовувався?

2

Re: Робота з JFrame

Ну ніби очевидно - перевіряти, і якщо форму створено,то не створювати.

3

Re: Робота з JFrame

я реально вже сам спробував багато варіантів, але нічого не виходить!!!

4

Re: Робота з JFrame

можливо краще використовувати jdialog тоді замість jframe ?

Подякували: fed_lviv, leofun012

5

Re: Робота з JFrame

потрібно саме jframe, (просто пишу курсач) Я вже пробував створювати статичний елемент і перевіряти по ньому, але нічого не виходить.

6

Re: Робота з JFrame

Покажіть якийсь із цих варіантів, бо поки немає коду, щось підказати важко.

7

Re: Робота з JFrame

Infa nf=new Infa();
        if(i==0 && nf.isVisible()==false){
        nf.setVisible(true);
        i++;
        }else i=0;

я створив статичний елемент і   , якщо і=0 і в той же момент інша форма ще не відображена, то відобразити її , але далі в else я незнаю що саме перевіряти

8

Re: Робота з JFrame

Дюрій написав:

На формі є кнопка, при натисканні на яку повинна відкриватись інша форма, але скільки б разів я не натискав на форму стільки ж буде створено нових форм. Як цьому запобігти?

А в чому проблема блокувати кнопку після натискання? Або скористатися шаблоном Одинак (для нового віконця)

Хоча я повністю погоджуюсь з truesupport в даному випадку модальне діалогове вікно в самий раз, проте, якщо так кортить JFrame, то будь-ласка.

Подякували: leofun011

9

Re: Робота з JFrame

0. Вирівнюйте код, вам же самому буде легше, не кажучи вже про інших. От як це зрозуміти - ви nf проголошуєте в тій самій функції, а потім додаєте невідомо нащо зайві відступи, чи ви скопіювали проголошення nf з іншого місця, а відступи це підкреслюють?
1. Винесіть проголошення змінної nf в інше місце, зробіть його елементом класу. Якщо воно проголошено так, то житиме до прохода збирача сміття. А у функції або перевіряйте видимість:

(деінде)
Infa nf = new Infa();
(у функції)
if(!nf.isVisible())
    nf.setVisible(true);

або створюйте і перевіряйте прямо тут:

(деінде)
Infa nf = null;//чи як воно там у жабів
(у функції)
if(nf==null)
    nf = new Infa();
if(!nf.isVisible())
    nf.setVisible(true);
Подякували: Дюрій1

10

Re: Робота з JFrame

Дякую все працює. Реально дуже дякую!!!