2017-10-03 1 views
1

Arbeiten an einem Nebenprojekt für einen Professor, der einen Zufallszahlengenerator will.Zufallsgenerator Jframe

Das Programm in seinem aktuellen Zustand lässt viel zu wünschen übrig, aber ich denke, dass ich auf dem richtigen Weg bin. Ich stehe jedoch fest, wenn es darum geht, das Textfeld zu verwenden, diese Daten an meine Zufallszahlengleichung zu übergeben und sie anzuzeigen. Grundsätzlich wartet das Programm nicht auf die Benutzereingabe in das Textfeld.

Wir haben es in der Schule nie hinter OOP geschafft, also muss ich die großen Waffen rausholen (Leute).

Hier ist, was ich gerade arbeite. Das letzte Bit am Ende ist der Teil, mit dem ich Probleme habe.

package RandomButton; 

    import java.awt.BorderLayout; 
    import java.awt.EventQueue; 
    import java.util.Random; 
    import java.util.Scanner; 
    import javax.swing.JFrame; 
    import javax.swing.JPanel; 
    import javax.swing.border.EmptyBorder; 
    import javax.swing.JButton; 
    import java.awt.Font; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 

    import javax.swing.JTextField; 
    import javax.swing.SwingConstants; 
    import javax.swing.JLabel; 

    public class GUI extends JFrame { 

     private JPanel contentPane; 
     private JTextField textField; 
     private JTextField ClassSize; 
     private JLabel label; 
     private JTextField textField_1; 

     /** 
     * Launch the application. 
     */ 
     public static void main(String[] args) { 
      EventQueue.invokeLater(new Runnable() { 
       public void run() { 
        try { 
         GUI frame = new GUI(); 
         frame.setVisible(true); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 
     } 

     /** 
     * Create the frame. 
     */ 
     public GUI() { 
      int x; 
      int max; 
      String strMax; 
      String strX; 
      Scanner kb = new Scanner(System.in); 

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setBounds(100, 100, 450, 300); 
      contentPane = new JPanel(); 
      contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
      setContentPane(contentPane); 
      contentPane.setLayout(null); 

      //Text field code 
      textField = new JTextField(); 
      textField.setText("1"); 
      textField.setHorizontalAlignment(SwingConstants.CENTER); 
      textField.setBounds(10, 143, 414, 35); 
      contentPane.add(textField); 
      textField.setColumns(10); 

      //Randomize button code 
      JButton btnNewButton = new JButton("Randomize!"); 
      btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 40)); 
      btnNewButton.setBounds(10, 196, 414, 54); 
      contentPane.add(btnNewButton); 

      //Label code 
      label = new JLabel(); 
      label.setFont(new Font("Tahoma", Font.PLAIN, 70)); 
      label.setHorizontalAlignment(SwingConstants.CENTER); 
      label.setBounds(10, 11, 414, 103); 
      contentPane.add(label); 

      //math code 
      Random num = new Random(); 
      strMax = textField.getText(); 
      max = Integer.parseInt(strMax); 
      x = num.nextInt(max) + 1; 
      strX = String.valueOf(x); 
      label.setText(strX); 
     } 
    } 
+0

http://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html Wahrscheinlich benötigen Sie hier einen Event-Handler. –

+0

JTextField verzögert Ihren Code nicht oder irgendetwas ähnliches, es fügt nur das Feld hinzu. Sie benötigen einen Ereignis-Listener. Sie finden Beispiele in Oracle-Dokumenten –

Antwort

0

Was Sie brauchen, ist ein ActionListener hinzuzufügen,

einfache Modifikation des Codes zu sehen, ohne größere Diskussion ist, um den Code zu bewegen, die Zufallszahlen simulieren ...

//Randomize button code 
    JButton btnNewButton = new JButton("Randomize!"); 
    btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 40)); 
    btnNewButton.setBounds(10, 196, 414, 54); 
    contentPane.add(btnNewButton); 

    // the listener 
    btnNewButton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       Random num = new Random(); 
       String strMax = textField.getText(); 
       int max = Integer.parseInt(strMax); 
       int x = num.nextInt(max) + 1; 
       String strX = String.valueOf(x); 
       label.setText(strX); 
      } 
     });