2015-01-28 2 views
0

У меня есть два класса: класс JDialog и JFrameJDialog SetVisible

Когда я нажимаю кнопку в JFrame, она вызывает класс JDialog и получает текст на текстовое поле внутри JDialog и устанавливает его в другой переменной. Вот псевдокоде

class JFrame { 
    private jDialog jd; 
    private JButton b; 

    public JFrame(){ 

    b actionListener { 
    jd = new jDialog(); 
    jd.setModal(true); 
    jd.setVisible(true); 

    String someString = jd.getString(); 

    checkIfExists(someString); 
    } 
    } 
     } 

public void checkIfExists(String someString){ 

    if(someString exists) { 
     JOptionPane.showMessageDialog(null,"String exists); 
     jd.setVisible(true); 

    } else { 
     save someString 
     jd.setVisible(true); 
    } 
    } 

class jDialog { 
private JButton a; 
private String s = ""; 
private JTextField t; 

    public jDialog{ 

    a actionListener { 
    s = t.getText(); 
     setVisible(false); 
    } 
     } 

    public String getString() { 
    return s; 
    } 
} 

Когда я ввожу строку, которая существует, он предлагает JOptionPane, что она существует, но программа проходит только один раз. Когда я пытаюсь редактировать текстовое поле, он не возвращается к «проверке» строки, если она существует, вместо этого поток останавливается на «setVisible (false)» на «actionListener» в «классе jDialog», который я отслеживал он использует system.out. (то же самое применимо для! существует, он сохраняется только один раз, и когда я пытаюсь сохранить другую несуществующую строку, она останавливается)

Любая идея, как сохранить jDialog? Я использую setVisible(), чтобы скрыть его, а не dispose();

+0

Вместо этого предлагайте пользователю 'JFileChooser'. И используйте логическую и согласованную форму отступов и строк кода. Отступы предназначены для того, чтобы поток кода стал проще следовать! –

+0

Я использую базу данных mysql – meatno

+0

Рассмотрите возможность предоставления [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это приведет к меньшему путанице и лучшим ответам – MadProgrammer

ответ

0

При попытке отредактировать текстовое поле, он не возвращается к «проверке» строки, если это существующий

Это потому, что checkIfExists(someString) делается в b слушателю, который экземпляр new jDialog(), немедленно получите строку в поле и выполните проверку.

Вы должны создать экземпляр только один jDialogJFrame коде):

class JFrame { 
    private jDialog jd = new jDialog(); 

В b слушателя установлен видимым jd объекта (и в конечном итоге сбросить содержимое JTextField):

b actionListener { 
    jd.setVisible(true); 

Выполните проверку в приемнике a (в классе jDialog):

a actionListener { 
    checkIfExists(t.getText()); 
    setVisible(false); 
} 
+0

Все еще не работает. Мне нужно позвонить - "String someString = jd.getString(); checkIfExists (someString);" somehow – meatno

+0

Я только что отредактировал свой ответ, чтобы показать вам, как правильно реализовать код. –

 Смежные вопросы

  • Нет связанных вопросов^_^