2015-12-09 3 views
1

Я пытался часами, чтобы получить значение boolean от класса до моего метода main. Я хочу переменную GeneralFrame.Получить значение boolean от класса к основному методу. JAVA

Также правильно использовать JDialog, чтобы спросить пользователя, является ли он новым или возвращенным, а затем запустить мой JFrame? Вот мой код:

package portofoliexpense; 

import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 


import javax.swing.JButton; 
import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

/** 
* 
* @author AlexandrosAndreadis 
*/ 
public class PortofoliExpenseDialog extends JDialog implements ActionListener {  
    boolean GeneralFrame = false;   

    //dimiourgia minimatos 
    JPanel messagePane = new JPanel();   

    JPanel buttonPanel = new JPanel(); // ftiaxnw button 
    JButton existinguser = new JButton("Existing User"); 
    JButton newuser = new JButton("New User"); 

    public PortofoliExpenseDialog (JFrame parent, String title) { 
     super(parent, title); 

     setLocationRelativeTo(null); 
     //dimiourgia minimatos 
     messagePane.add(new JLabel("Hello, click one of the above to continue!")); 

     getContentPane().add(messagePane);// ypodoxeas gia ola ta //components   

     buttonPanel.add(existinguser); 
     buttonPanel.add(newuser); 
     getContentPane().add(buttonPanel, BorderLayout.PAGE_END); // border //layout sto telos tou dialog 


     newuser.addActionListener(this); 
     existinguser.addActionListener(this); 

     setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
     setResizable(false); // den allazei megethos 
     pack(); 
     setVisible(true); 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     Object source = e.getSource(); 
     if (source == existinguser) { 
      GeneralFrame = true; 

     } 

     if (source == newuser){ 
      GeneralFrame = false;  
     } 

    }   
} 

Я пробовал много вещей. Я также использовал return, но не смог его получить.

+0

Где код для 'основной()' метода? – Nayuki

ответ

0

Для этого вы можете использовать JOptionPane вместо JDialog.

Вот пример:

static boolean isNewUser; 
public static void main(String[] args) throws InvocationTargetException, InterruptedException { 
    SwingUtilities.invokeAndWait(new Runnable() { 
     @Override 
     public void run() { 
      isNewUser = isNewUser(); 
     } 
    }); 
    System.out.println("Is new user: " + isNewUser); 
} 

public static boolean isNewUser() { 
    Object[] options = { "Existing User", "New User" }; 
    int resp = JOptionPane.showOptionDialog(null, "Hello, click one of the above to continue!", "User Type", JOptionPane.YES_NO_OPTION, 
      JOptionPane.QUESTION_MESSAGE, null, options, options[0]); 
    return resp == JOptionPane.NO_OPTION; 
} 
+0

, если вы могли бы объяснить код. Все будет хорошо !!! И спасибо, это то, что я хотел. –

+0

@AlexAndreadis Не так много объяснять, все, что вам нужно знать, это то, что делает метод showOptionDialog (...) ', вы можете найти много подробностей об этом в этом уроке https://docs.oracle. com/javase/tutorial/uiswing/components/dialog.html В принципе, он создает диалог и заменяет исходные кнопки «Да», «Нет» со значениями в массиве «options», ждет, когда пользователь выберет опцию и возвращает выбранный параметр как 'boolean' – Titus

+0

также, как я могу видеть' булево isNewUser = isNewUser() 'работает лучше вместо' SwingUtilities.invokeAndWait (новый Runnable() { @Override общественности недействительным запуска() { булево isNewUser = isNewUser(); } }); } ' –

0

Основной метод принимает только в виде массива строк:

public static void main(String[] args) { 

Таким образом, только данные, которые вы можете отправить основной метод, конечно, массив. Но вы хотите перейти в логическое.

Вы знаете, как передать параметр, но здесь он принимает только массив строк. Поскольку мы хотим передать boolean, давайте просто передадим этот boolean в массиве.

После прохождения булевого в основной метод с помощью массива строк, получить его, выполнив следующие действия:

boolean boolean1 = Boolean.parseBoolean(ArrayWhereIPutMyBoolean(0)); 

Теперь boolean1 является булевым, что вы прошли в от основного метода!

0

В основном методе вы вызываете переменную GeneralFrame как «имя экземпляра» .GeneralFrame?

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

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