|
You last visited: Today at 04:34
Advertisement
[Java] Während Methode Fenster öffnen und Variable ablesen
Discussion on [Java] Während Methode Fenster öffnen und Variable ablesen within the Java forum part of the Coders Den category.
01/25/2014, 21:56
|
#1
|
elite*gold: 7
Join Date: May 2009
Posts: 6,910
Received Thanks: 4,497
|
[Java] Während Methode Fenster öffnen und Variable ablesen
Hey,
in meinem Programm läuft ne Methode ab. Irgendwann muss dann ein Key eingelesen werden. Ich bekomme es aber einfach nicht hin, dass sich in meiner Methode irgendwann ein simples Fenster öffnet, das ein Text Feld, ein Label und einen Knopf enthält und beim Knopf Druck den Text aus dem Feld einliest und als String speichert, welcher in dann in meiner Methode weiter verwendet werden soll.
Wäre cool wenn mir jemand helfen kann
|
|
|
01/25/2014, 22:21
|
#2
|
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
|
Sagt dir JOptionPane etwas? Mit dem kann man ganz simpel dein Problem lösen.
Code:
String input = JOptionPane.showInputDialog(null, "Enter in some text:");
if(input != null) {
// do your work here
}
|
|
|
01/25/2014, 22:24
|
#3
|
elite*gold: 0
Join Date: Mar 2013
Posts: 3,185
Received Thanks: 1,317
|
Wenn ich dich richtig verstehe willst du innerhalb einer Methode ein JFrame bzw. ein Fenster öffnen.
Das geht folgendermaßen:
Code:
NAME_DES_JFRAMES t;
[...]
public void oeffneframe()
{
t = new NAME_DES_JFRAMES();
}
Um das Fenster zu designen solltest du dann eine passende Entwicklungsemgebung verwenden. Ich benutze hierfür NetBeans.
Beim Druck auf Knopf einlesen(Snippet):
Code:
public static String inhalt = null;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
inhalt = jTextField1.getText().toString();
jLabel1.setText(inhalt);
}
Kompletter Code (inklusive Frame) - generiert mit Netbeans:
Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sounddownloader;
/**
*
* @author Tobias Hund
*/
public class NewJFrame1 extends javax.swing.JFrame {
/**
* Creates new form NewJFrame1
*/
public static String inhalt = null;
public NewJFrame1() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("jLabel1");
jTextField1.setText("jTextField1");
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(19, 19, 19)
.addComponent(jButton1)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
inhalt = jTextField1.getText().toString();
jLabel1.setText(inhalt);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame1().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}
Um den String ' inhalt' dann in einer anderen Klasse zu verwenden muss der String public static sein. Verwenden tust du diesen dann folgendermaßen:
Code:
NAME_DES_JFRAMES t;
[...]
public void oeffneframe()
{
System.out.println(t.inhalt);
}
|
|
|
01/25/2014, 22:47
|
#4
|
elite*gold: 7
Join Date: May 2009
Posts: 6,910
Received Thanks: 4,497
|
@ XxharCs Dich wollte ich vorhin schon anschreiben aber du warst nicht on
Boar man, da hätte ich mir das ewige (!) rumprobieren sparen können! Vielen Dank, genau das was ich gebraucht hab. Die Funktion war mir noch nicht bekannt
@Zunft Danke, genau so wollte ich das auch lösen, bloß mein Problem war: wie kann ich bei der Netbeans GUI einstellen, dass das Fenster nicht von vorn herein offen ist sondern erst später geöffnet wird?
|
|
|
01/25/2014, 22:59
|
#5
|
elite*gold: 0
Join Date: Mar 2013
Posts: 3,185
Received Thanks: 1,317
|
Quote:
Originally Posted by Chicken17
@Zunft Danke, genau so wollte ich das auch lösen, bloß mein Problem war: wie kann ich bei der Netbeans GUI einstellen, dass das Fenster nicht von vorn herein offen ist sondern erst später geöffnet wird? 
|
Erstell doch einfach eine zweite Klasse von wo du, wenn du das Fenster haben willst aufrufst.
Du könntest auch initComponents woanders hinpacken, nur dann sieht dein Fenster so aus:
Ansonsten ist mir keine weitere Möglichkeit bekannt.
|
|
|
01/25/2014, 23:02
|
#6
|
elite*gold: 7
Join Date: May 2009
Posts: 6,910
Received Thanks: 4,497
|
Quote:
Originally Posted by Zunft
Erstell doch einfach eine zweite Klasse von wo du, wenn du das Fenster haben willst aufrufst.
Du könntest auch initComponents woanders hinpacken, nur dann sieht dein Fenster so aus:
Ansonsten ist mir keine weitere Möglichkeit bekannt.
|
Stimmt, so könnte ich das auch lösen  Danke!
|
|
|
01/25/2014, 23:31
|
#7
|
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
|
Oder ohne Form-Designer:
Quote:
JFrame frame = new JFrame();
final JTextField text = new JTextField();
JButton button = new JButton();
frame.add(text);
frame.add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(text.getText());
}
}
frame.setVisible(true);
|
|
|
|
01/25/2014, 23:34
|
#8
|
elite*gold: 7
Join Date: May 2009
Posts: 6,910
Received Thanks: 4,497
|
Habe die Methode von XxharCs genommen. Weiß da jemand wie ich bei
PHP Code:
String code = javax.swing.JOptionPane.showInputDialog( "Key eingeben" ); System.out.println(code);
Dafür sorgen kann, dass der Dialog immer im Vordergrund bleibt?
|
|
|
01/25/2014, 23:55
|
#9
|
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
|
Habe mal eine noch schönere Lösung gefunden als die aus der PN: JDialog.
Code:
JDialog dialog = new JOptionPane("Enter text in here:", JOptionPane.QUESTION_MESSAGE,JOptionPane.DEFAULT_OPTION).createDialog("Input");
dialog.setAlwaysOnTop(true);
dialog.setVisible(true);
dialog.dispose();
if( dialog.getValue() instanceOf String){
String myString = (String) dialog.getValue();
}
Vom Handy gesendet. Ich hoffe dieser Ansatz funktioniert, schreibe sowas zum ersten mal
Edit: Wenn es nicht geht, musst du dich aufjedenfall mit JDialog und JOptionPane beschäftigen. Kann grad schlecht vom Handy aus was rumprobieren, morgen erst wieder.
|
|
|
01/26/2014, 00:04
|
#10
|
elite*gold: 7
Join Date: May 2009
Posts: 6,910
Received Thanks: 4,497
|
Quote:
Originally Posted by XxharCs
Habe mal eine noch schönere Lösung gefunden als die aus der PN: JDialog.
Code:
JDialog dialog = new JOptionPane("Enter text in here:", JOptionPane.QUESTION_MESSAGE,JOptionPane.DEFAULT_OPTION).createDialog("Input");
dialog.setAlwaysOnTop(true);
dialog.setVisible(true);
dialog.dispose();
if( dialog.getValue() instanceOf String){
String myString = (String) dialog.getValue();
}
Vom Handy gesendet. Ich hoffe dieser Ansatz funktioniert, schreibe sowas zum ersten mal 
|
So wäre es immer im Vordergrund, bloß wie füge ich da jetzt noch einen Feld hinzu wo ich einen Text eingeben kann und die Schleife enthält einen Fehler
|
|
|
01/26/2014, 00:21
|
#11
|
elite*gold: 0
Join Date: Mar 2013
Posts: 3,185
Received Thanks: 1,317
|
Quote:
Originally Posted by Chicken17
Quote:
Originally Posted by XxharCs
Habe mal eine noch schönere Lösung gefunden als die aus der PN: JDialog.
Code:
JDialog dialog = new JOptionPane("Enter text in here:", JOptionPane.QUESTION_MESSAGE,JOptionPane.DEFAULT_OPTION).createDialog("Input");
dialog.setAlwaysOnTop(true);
dialog.setVisible(true);
dialog.dispose();
if( dialog.getValue() instanceOf String){
String myString = (String)dialog.getValue();
}
Vom Handy gesendet. Ich hoffe dieser Ansatz funktioniert, schreibe sowas zum ersten mal
Edit: Wenn es nicht geht, musst du dich aufjedenfall mit JDialog und JOptionPane beschäftigen. Kann grad schlecht vom Handy aus was rumprobieren, morgen erst wieder.
|
So wäre es immer im Vordergrund, bloß wie füge ich da jetzt noch einen Feld hinzu wo ich einen Text eingeben kann und die Schleife enthält einen Fehler 
|
Code:
String myString = dialog.getValue().toString();
Da ist der Fehler.
Und hier das Textfeld auf JOptionPane:
Code:
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class InputPopUps {
public static void main(String[] a) {
JFrame frame = new JFrame();
Object result = JOptionPane.showInputDialog(frame, "Hier Eingabe");
System.out.println(result);
}
}
Quote:
Originally Posted by Chicken17
So wäre es immer im Vordergrund, bloß wie füge ich da jetzt noch einen Feld hinzu wo ich einen Text eingeben kann und die Schleife enthält einen Fehler 
|
Btw: Bei uns im Informatik-Kurs muss jemand der "if-Schleife" sagt immer einen Kuchen backen - es ist nämlich eine if-Verzweigung
|
|
|
01/26/2014, 00:29
|
#12
|
elite*gold: 7
Join Date: May 2009
Posts: 6,910
Received Thanks: 4,497
|
Quote:
Originally Posted by Zunft
Code:
String myString = dialog.getValue().toString();
Da ist der Fehler.
Und hier das Textfeld auf JOptionPane:
Code:
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class InputPopUps {
public static void main(String[] a) {
JFrame frame = new JFrame();
Object result = JOptionPane.showInputDialog(frame, "Hier Eingabe");
System.out.println(result);
}
}
Btw: Bei uns im Informatik-Kurs muss jemand der "if-Schleife" sagt immer einen Kuchen backen - es ist nämlich eine if-Verzweigung
|
Danke, werde das morgen mal probieren, bin nicht mehr am PC.
Bei dem mit der "if schleife" hab ich mich neulich selbst schon ertappt, weiß auch nicht wo ich mir das angeeignet habe
|
|
|
01/26/2014, 00:33
|
#13
|
elite*gold: 0
Join Date: Mar 2013
Posts: 3,185
Received Thanks: 1,317
|
Quote:
Originally Posted by Chicken17
Danke, werde das morgen mal probieren, bin nicht mehr am PC.
Bei dem mit der "if schleife" hab ich mich neulich selbst schon ertappt, weiß auch nicht wo ich mir das angeeignet habe 
|
Code:
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class tst {
public static void main(String[] a) {
JFrame frame = new JFrame();
Object result = JOptionPane.showInputDialog(frame, "Hier Eingabe");
System.out.println(result);
if (result.toString().equals("123"))
{
JOptionPane.showMessageDialog(frame, "Herzlichen Glueckwunsch sie haben 123 eingegeben!");
}
else
{
JOptionPane.showMessageDialog(frame, "Sie haben leider nicht 123 eingegeben.");
}
}
}
Ich hab mal noch deine if-Verzweigung mit in das Programm eingebracht.
|
|
|
01/26/2014, 14:41
|
#14
|
elite*gold: 7
Join Date: May 2009
Posts: 6,910
Received Thanks: 4,497
|
Quote:
Originally Posted by Zunft
Code:
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class tst {
public static void main(String[] a) {
JFrame frame = new JFrame();
Object result = JOptionPane.showInputDialog(frame, "Hier Eingabe");
System.out.println(result);
if (result.toString().equals("123"))
{
JOptionPane.showMessageDialog(frame, "Herzlichen Glueckwunsch sie haben 123 eingegeben!");
}
else
{
JOptionPane.showMessageDialog(frame, "Sie haben leider nicht 123 eingegeben.");
}
}
}
Ich hab mal noch deine if-Verzweigung mit in das Programm eingebracht.
|
Die if Verzweigung brauch ich nicht, aber bei dem was du mir jetzt geschrieben hast kann ich das dialog.setAlwaysOnTop(true); ja nicht mit einbauen....
Ich brauch einfach das von XxharCs (wo das mit dem setAlwaysOnTop funktioniert) mit einem Textfeld und Knopf zum eingeben. Dort steht bloß "Hier bitte eingeben" aber ich kann ja nix eingeben.
Wenn ich bei dir
PHP Code:
frame.setAlwaysOnTop(true); frame.setVisible(true); frame.dispose();
einfüg ändert sich gar nichts
|
|
|
01/26/2014, 14:47
|
#15
|
elite*gold: 0
Join Date: Mar 2013
Posts: 3,185
Received Thanks: 1,317
|
Quote:
|
Dort steht bloß "Hier bitte eingeben" aber ich kann ja nix eingeben.
|
Code:
showInputDialog(frame, "Hier Eingabe");
Hier zeigt der eine MessagBox mit einem Label, wodrin "Hier Eingabe" steht, einem Textfeld und zwei Buttons (OK, ABBRECHEN), also kannst du was eingeben.
Quote:
|
bei dem was du mir jetzt geschrieben hast kann ich das dialog.setAlwaysOnTop(true); ja nicht mit einbauen....
|
Dann änder doch einfach
Code:
Object result = JOptionPane.showInputDialog(frame, "Hier Eingabe");
in
Code:
JDialog dialog = JOptionPane.showInputDialog(frame, "Hier Eingabe");
dialog.setAlwaysOnTop(true);
dialog.setVisible(true);
dialog.dispose();
Ich habs jetzt noch nicht ausprobiert, sollte aber eigentlich funktionieren.
|
|
|
 |
|
Similar Threads
|
Dinge aus Java Programm ablesen
12/29/2012 - AutoIt - 7 Replies
Hi,
Ich bin ziiiiemlich neu in AutoIt, kann aber schon so ganz kleine Programme schreiben.
Ich will demnächst für mich einen kleinen KlickerBot für FUT13( FIFA Ultimate Team 13) Web App schreiben.
Das Problem ist, dass die FIFA Web App ein (ich glaube) Javaprogramm ist. Also es ist auf einer WEbsite ein Programm. Die meisten wissen hoffentlich was ich meine.
Und zwar geht es mir darum:
Der Bot soll für mich Spielerverträge kaufen. Das Problem ist, dass man beim Filter nur vertrag...
|
[Java] Variable nicht erkannt
04/14/2012 - General Coding - 3 Replies
Also ich weiß nich ob ich hier richtig bin, aber wohin sonst^^
Ich spiel grad ein bissl mit Java rum und wollte einen simplen Rechner, der +,-,* und / kann. Jedoch scheiter ich schon an +^^ Ich definiere bei + eine Variable mit int, die das Ergebnis aus dem 1. und 2. Textfeld berechnet, wandel es in einen String um und mache mit setText das ding ins Ergebnisfeld rein, funzt jedoch nicht. Im Ergebnis- Feld denk ich hab ich alles richtig, obwohl NetBeans einen Fehler anzeigt, das er die...
|
[C++]Variable in fstream öffnen
08/02/2010 - C/C++ - 14 Replies
Wo ist hier der fehler?
|
Während Spiel Maus aus Fenster bewegen
07/09/2010 - League of Legends - 5 Replies
Hi zusammen.
Ich bin ein totaler LoL Noob, daher erscheint meine Frage vielleicht etwas dämlich. Ich bitte einfach um Nachsicht ;)
Also ich spiele LoL im Fenstermodus und würde gerne während des Spiels die Maus aus dem Fenster bewegen können, was aber nicht möglich ist. Da ich prinzipiell ein problem damit habe, wenn ein Spiel meine Maus gefangen nimmt und die Windows Hotkey auch nicht funktionieren hoffe ich einfach, dass ihr mir weiterhelfen könnt...
LG
|
All times are GMT +1. The time now is 04:34.
|
|