Zufälliges Auswählen von Textfields

Marcil

Mitglied
Hallo,
ich habe eine Gui mit Netbeans Programmiert. Im ersten Frame gibt es 6 Textfields in die man dann Namen eintragen soll. Wenn man dann auf ok drückt, öffnet sich ein zweiter Frame, der ein Textfield enthält, auf dem dann zufällig einer der eingegebenen Namen stehen soll. Ich hab jetzt das Problem, dass ich nicht weiß, wie ich vom zweiten Frame aus die Namen herausziehen kann und dann einen Namen zufällig in Textfield 2 einfügen kann.

Danke im vorraus.

Marcil
 
In deinem ersten Frame könntest du eine Methode
Code:
getRandomName
haben, die der zweite Frame dann aufrufen kann. Der zweite Frame braucht dann eine Referenz auf den ersten frame.
 
Ist es normal, dass wenn man "GUI" und "Netbeans" in einen Satz liest, man sofort an so eine hässliche GUI-Builder-GUI, in der sich vermutlich nichtmal die Entwickler auskennen würden denkt?

Schreib die Felder in ein Array, errechne einen Zufallszahl zwischen inkl. 0 und (Array-Länge - 1), hohl dir den Text aus den Feld und übergib ihm den 2. Frame. Aus den 2. herausziehen ist nicht gut, Klassen sollten wenn möglich hierarisch angeordnet sein. Also A kennt B aber B kennt nicht A, sonst baust du zu viele unnötige und komplizierte Abhängigkeiten auf. Davon abgesehen, dass es der Wiederverwendbarkeit erheblich schadet.
 
Kannste mir vllt en Beispielcode geben, weil ich bin in Java noch relativ neu und hab keine Ahnung wie ich den Verweis herstellen kann und den Syntax für die zufällige Auswahl. Ja naja. Ich versteh die Gui noch, da ich sie zuvor schon so halber in eclipse gemacht hab 🙂
 
Zuletzt bearbeitet:
Jetzt sag bloß, mit Beispielcode verstehst du es mehr.

Java:
package javaforum;

import java.awt.Dimension;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class FirstFrame extends JFrame
{
	private Dimension FIELD_MAX_DIM = new Dimension(200, 0); 
	private int FIELD_COUNT = 6; 

	private JTextField[] field;
	
	public FirstFrame()
	{
		setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		field = new JTextField[FIELD_COUNT];
		for(byte b = 0; b < FIELD_COUNT; b++)
		{
			field[b] = new JTextField();
			field[b].setMinimumSize(FIELD_MAX_DIM);
			add(field[b]);	
		}
		
		JButton approveButton = new JButton("OK");
		approveButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				approveCall();
			}
		});
		add(approveButton);
		
		pack();
		setVisible(true);
	}
	private void approveCall()
	{
		int rand = (int) computeRandomNumber(field.length);
		String text = field[rand].getText();
		showSecondFrame(text, this);
	}
	private double computeRandomNumber(int max)
	{
		return(Math.random() * max);
	}
	private void showSecondFrame(String text, Window parent)
	{
		new SecondFrame(text, parent);
	}
	
	public static void main(String[] args)
	{
		SwingUtilities.invokeLater(new Runnable() {
			public void run()
			{
				new FirstFrame();
			}
		});
	}
}
package javaforum;

import java.awt.FlowLayout;
import java.awt.Window;

import javax.swing.JDialog;
import javax.swing.JLabel;

public class SecondFrame extends JDialog
{
	public SecondFrame(String text)
	{
		this(text, null);
	}
	public SecondFrame(String text, Window parent)
	{
		super(parent);
		setModal(true);
		
		setLayout(new FlowLayout());
		add(new JLabel(text));
		
		pack();
		setLocationRelativeTo(null);
		setVisible(true);
	}
}

Ich meinte, dass wohl kaum die Entwickler der GUI-Builder mit den Mist der da zu 99 % rauskommt auskennen würden. ^^
 

Neue Themen


Zurück
Oben