2014-02-16 6 views
-3

Мне интересно, сможет ли список arraylist работать с окном JOptionPane. Я пытаюсь разветвиться только из командной консоли в окнах, поэтому я пытаюсь понять, как работать с JOptionPane.Является ли arraylist способным функционировать с JOptionPane

, например psudocode:

import javax.swing.*; 
import java.util.*; 
import java.io.*; 

public class try1 
{ 

private static JPanel panel = new JPanel(); 
private static try2 testing = new try2(); 
public static Integer testnum; 


public static void main (String[] args) 
{ 
     testnum = Integer.parseInt(JOptionPane.showInputDialog(null, "Please Enter The Amount Of Test To Be Calculated Below ")); 
     tryMe(); 
} 

public static void tryMe() 
{ 
      int userInput = 0; 
      Object[] options1 = { " ENTER " , " GET AVERAGE " }; 
      panel.add(new JLabel(" PLEASE ENTER ALL THE FOLLOWING TEST GRADES TO CALCULATE ")); 
      JTextField textField = new JTextField(10); 
      panel.add(textField); 

      if (userInput == JOptionPane.YES_OPTION) 
      { 
       for (int count = 1; count <= testnum; count++) 
       { 
        userInput = JOptionPane.showOptionDialog(null, panel, " TEST AVERAGE PROGRAM " ,JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE,null, options1, null); 
        try2 testing = new try2 (userInput); // sending this to my class. 
       } 
      } 



      if (userInput == JOptionPane.NO_OPTION) 
      { 
       testing.setAvg(); 
       JOptionPane.showMessageDialog(null,"You average is" + (testing.getAvg())); 

      } 
} 
} 


class try2 
{ 
    public static ArrayList<Integer>userInput=new ArrayList<Integer>(); 
    public static double avg; 

public try2() 
{ 
} 

public try2(int i) 
{ 

     userInput.add(i); 


} 


public static void setAvg() 
{ 

try 
    { 
     int sum = 0; 

     for (int x = 0 ; x < userInput.size(); x++) 
     { 
      sum += userInput.size() ; 
     } 

     avg = sum/userInput.size(); 

     if (avg < 0 || avg > 100) 
     { 
      IllegalArgumentException ex; 
     } 
    } 

catch (IllegalArgumentException ex) 
    { 

    } 

} 

public static double getAvg() 
{ 
    return avg; 
} 

} 

Я начал этот пример для того, чтобы увидеть, как это работает, может кто-нибудь сказать мне, что я делаю неправильно. Так это было, когда я застрял в Jpanel, и он проходит через мое заявление. Однако jpanel не очищается. Как я могу заставить Jpanel очистить, чтобы можно было ввести другой вход?

+0

Там нет никакой подсказки о том, как вы используете '' JOptionPane' с ArrayList' –

+3

Может ли ArrayList работы с JOptionPane? Да. Если вам нужна специфика, укажите специфику. – Taylor

+0

«Я не уверен, что Java создала функцию для класса Arraylist, который может работать с JOptionPane;» ': Нет никакого« волшебного »метода. Вам придется самим закодировать это, но, к счастью, сделать это не так уж сложно. Почему бы не попробовать? '", или если Arraylist должен быть оставлен программой с системной консолью. "': no, конечно, это неверно. Что вам нужно сделать, это написать код и поэкспериментировать. –

ответ

0

«Я пытаюсь разветвиться, просто используя консоль в окнах, поэтому я пытаюсь понять, как работать с JOptionPane».

Так выглядит JOptionPane ваша первая встреча с любой GUI. Я бы рекомендовал попробовать самые простые задачи. Некоторые примечания первых

  • Дело о вашем коде, кроме того факта, что ваш отсутствующего (); в конце вашего ArrauList декларации, является то, что ваш цикл выключено.
    1. Вы пытаетесь использовать example.size() для итераций, который изначально равен 0. Цикл будет работать, но это будет бесконечный цикл внутри явного условного if/break внутри цикла.
    2. Вы не должны проверять, есть ли count >, а скорее count < и сейчас используйте строгий код.

После выполнения описанных выше моментов, попробовать что-то простое, как

  1. Tterating 10 раз, показывая на JOptionPane и добавления номера входа в список

    for (int count = 0; count < 10; count++) { 
        Integer num = ... 
        example.add(num); 
    } 
    
  2. Тогда после цикл делается, просто сделайте что-нибудь вроде добавления всех номеров из ArrayList и распечатайте его.

Просто сделайте кучу простых вещей, подобных этому, чтобы повесить его. Кроме того, посмотрите на How to Make Dialogs для других JOptionPane диалогов помимо inputDialog


UPDATE с кодом

import javax.swing.*; 
import java.util.*; 
import java.io.*; 

public class try1 { 

    private static JPanel panel = new JPanel(); 
    private static try2 testing = new try2(); 
    public static Integer testnum; 

    public static void main(String[] args) { 
     testnum = Integer.parseInt(JOptionPane.showInputDialog(null, "Please Enter The Amount Of Test To Be Calculated Below ")); 
     tryMe(); 
    } 

    public static void tryMe() { 
     int userInput = 0; 

     if (userInput == JOptionPane.YES_OPTION) { 
      for (int count = 1; count <= testnum; count++) { 
       String userInputString = JOptionPane.showInputDialog(null, " PLEASE ENTER ALL THE FOLLOWING TEST GRADES TO CALCULATE "); 
       int value = Integer.parseInt(userInputString); 
       testing.addInput(value); // sending this to my class. 
      } 

      JOptionPane.showMessageDialog(null, String.valueOf(testing.getAvg())); 
     } 

     if (userInput == JOptionPane.NO_OPTION) { 
      System.exit(0); 

     } 
    } 
} 

class try2 { 

    public static ArrayList<Integer> userInput = new ArrayList<Integer>(); 
    public static double avg; 

    public try2() { 
    } 

    public void addInput(int value) { 
     userInput.add(value); 
    } 

    public try2(int i) { 

     userInput.add(i); 

    } 

    public double getAvg() { 
     double sum = 0; 
     for (Integer value : userInput) { 
      sum += value; 
     } 
     return sum/userInput.size(); 
    } 
} 
+0

Отличный совет Спасибо, много! Я возьму ваш пример, чтобы начать – Erick

+0

Я взял ваш пример и поставил его на тест, вы можете сказать мне, что я делаю неправильно. Jpanel подходит, поэтому он просматривает мое заявление. Однако jpanel не очищается, поэтому пользователь может ввести другой вход? Как я могу заставить Jpanel очистить, чтобы можно было ввести другой вход? – Erick

+0

Ваш код не компилируется. Я не могу проверить это. Его недостающие вещи –

0

Это моя тестовая программа, которую я создал, используя массив-список и Jopt. Мне придется поддразнивать мой счетчик в моем главном, но это будет кусок пирога.Спасибо @peeskillet за помощь

// Import Libraries 

    import javax.swing.*; 
    import java.util.*; 



public class Try1 

{  
public static ArrayList<Integer>user=new ArrayList<Integer>(); 
private static JPanel panel = new JPanel(); 
public static Integer testnum; 

public static void main (String[] args) 
{ 
     testnum = Integer.parseInt(JOptionPane.showInputDialog(null, "Please Enter The Amount Of Test To Be Calculated Below ")); 
     classes(); 
} 
public static void classes() 
{ 
    int userInput = 0; 
    if (userInput == JOptionPane.YES_OPTION) 
    { 
     user = new ArrayList<Integer>(); 
     for (int count = 1; count <= testnum; count++) 
     { 
      String userInputString = JOptionPane.showInputDialog(null, " PLEASE ENTER ALL THE FOLLOWING TEST GRADES TO CALCULATE "); 
      int value = Integer.parseInt(userInputString); 
      user.add(value); 
      new Try2(user); 
     } 
    } 
     if (userInput == JOptionPane.NO_OPTION) 
     { 
      Try2.setAvg(); 
      JOptionPane.showMessageDialog(null, "You average is" + (Try2.getAvg())); 
     } 
      classesExtended();   
} 
public static void classesExtended() 
{ 
    JFrame frame = new JFrame(); 
    String[] options = new String[3]; 
    options[0] = new String (" GET AVERAGE "); 
    options[1] = new String (" OOPS I FORGOT!! ADD MORE TESTS "); 
    options[2] = new String (" Exit "); 
    int result = JOptionPane.showOptionDialog(frame.getContentPane(), " OK WHAT WOULD YOU LIKE TO DO NOW ","Title", 0,JOptionPane.INFORMATION_MESSAGE,null,options,null); 

    if (result == 0) 
    { 
     Try2.setAvg(); 
     JOptionPane.showMessageDialog(null,"You average is" + (Try2.getAvg())); 
    } 
    if (result == 1) 
    { 
     classes(); 
    } 
    if (result == 2) 
    { 
     System.exit(0); 
    }  
}  
} 


class Try2 
{ 
    public static ArrayList<Integer>userInput=new ArrayList<Integer>(); 
    public static double avg; 

public Try2() 
{ 
} 
public Try2(ArrayList<Integer> test) 
{ 
    try 
    { 
     for (int x = 0; x <= test.size()-1; x++) 
     { 
      if (test.get(x) < 0 || test.get(x) > 100) 
      { 
       throw new IllegalArgumentException(); 
      } 
      else 
      { 
       this.userInput = test; 
      } 
     } 
    } 
    catch (IllegalArgumentException ex) 
    { 
     JOptionPane.showMessageDialog(null, " NO NEGETIVES ALLOWED "); 
    } 
} 

public static void setAvg() 
{ 
     int sum = 0; 

     for (int x = 0 ; x < userInput.size(); x++) 
     { 
      sum += userInput.get(x) ; 
     } 
     avg = sum/userInput.size(); 
} 
public static double getAvg() 
{ 
    return avg; 
} 

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