Variable einer Eingabe in anderes Textfeld schreiben

Patrick123

Mitglied
Hallo,

ich habe folgendes Problem:
Ich habe eine GUI die verschiedene Funktionen hat / haben soll. Mittels eines Knopfdrucks können Parameter eingelesen werden. Diese würde ich dann gerne in einem Textfeld abpeichern bzw. anzeigen lassen. Leider weiß ich nicht wie ich das anstellen soll...
Hier ein Teil des Codes:

JButton btnParameter = new JButton("Position SW-Parameter");
btnParameter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String aparam = JOptionPane.showInputDialog(null, "Wie viele Parameter möchten Sie ändern?(1-4 möglich)", "Anzahl Parameter",
JOptionPane.INFORMATION_MESSAGE);
int iparam = Integer.parseInt(aparam);
if(iparam<1&&iparam>5) {
System.out.println("Sie können nun: "+aparam+" Parameter ändern!");
}
if(iparam==1) {

String sp1 = JOptionPane.showInputDialog(null, "\nBitte geben Sie die Position der SW-Parameter ein: (Form: 0-0-0)", "Position SW-Parameter",
JOptionPane.INFORMATION_MESSAGE);
System.out.println("Die Position des SW-Parameters lautet: "+sp1);

String[] parts1 = sp1.split("-");
String spp11=parts1[0];
String spp21=parts1[1];
String spp31=parts1[2];
int insp11=Integer.parseInt(spp11);
int insp21=Integer.parseInt(spp21);
int insp31=Integer.parseInt(spp31);
int insp11n=insp11-1;
int insp21n=insp21-1;
int insp31n=insp31-1;
String spneu11=insp11n+"-"+insp21n+"-"+insp31n;

HeadlessApplication.p1=spneu11;
String sw1 = JOptionPane.showInputDialog(null, "Geben Sie den gewünschten Wert für den Parameter "+sp1+" ein!", "Wert SW-Parameter",
JOptionPane.INFORMATION_MESSAGE);
System.out.println("Der neue Wert des SW-Parameters lautet: "+sw1);
HeadlessApplication.w1=sw1;
}

Es können bis zu 4 Parameter eingelesen werden.
Anschließend sollen diese Werte (hier "String spneu11") an folgende Stelle geschrieben werden:

JPanel pInfoleiste = new JPanel();
pInfoleiste.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Infoleiste", TitledBorder.CENTER, TitledBorder.TOP, null, new Color(0, 0, 0)));
pInfoleiste.setBounds(0, 147, 206, 172);
frmAblaufsteuerung.getContentPane().add(pInfoleiste);
JTextArea txtInfoleiste = new JTextArea();
txtInfoleiste.setFont(new Font("Arial", Font.PLAIN, 10));
txtInfoleiste.setText("Parameter 1: "+spneu11);
pInfoleiste.add(txtInfoleiste);

Leider habe ich keinen Schimmer wie ich das anstellen soll, weil die Variable spneu11 die ich oben einlese nicht in dem TextArea erkannt wird.
Vielen Dank im Voraus für hilfreiche Tipps und Anregungen!

Gruß
Patrick
 
Weil spneu11 eine lokale Variable ist... also ist diese nur im Block wo sie erstellt wurde sichtbar.

--> edit: verwende bitte die Code Tags
Java:
 // ..dein code
 
Danke für die schnelle Antwort!
Wie kann ich die Code-Tags verwenden? (sry, bin neu hier...)
Gibt es irgendeine Möglichkeit das Problem zu lösen? Die Variable spneu11 kann ich leider nicht public machen, da das ein unerlaubter modifier für spneu11 ist - nur final und das bringt in dem Fall nichts.
 
dann mach sie private und gib ihr einen getter
somit kann diese nur in der klasse verwendet werden und wenn andere (klassen) zugreifen wollen dann nur über den getter
Java:
private String spneu11;
public String GetSpNeu11(){return this.spneu11;}
 
Das funktioniert leider auch nicht. Oder ich erstelle den Code an der falschen Stelle...Es wird, egal ob ich es am Anfang der GUI oder in der Funktion public void actionPerformed(ActionEvent e), eine Fehlermeldung angezeigt, dass nur final für die Variable spneu11 zulässig ist -.-
Irgendwie muss man das doch umsetzen können 🙁
 
Java:
//Aufbau
package mein.package;
// imports
import java.....*;
// class
public class MeineKlasse{
    // variablen
    // -----> HIER WIRD DEINE VAR DEKLARIERT
    private String spneu11;

    // konstruktor
    public MeineKlasse(){}
    // methoden
}
 
Ok, das funktioniert zum Teil. Kann es sein, dass es mir den eingegebenen Wert spneu11 nicht im Textfeld "Infoleiste" anzeigen kann, weil das Panel mit dem Textfeld schon zum Start der GUI geöffnet ist?
Falls ja, gibt es eine Möglichkeit das Panel samt Textfeld zu "aktualisieren"?
 
Den Text von einen Textfeld setzt man mit der
Java:
textfield.setText("mein Text");
Methode.
also in deinem Fall wird die spneu11 gefüllt mit
Java:
spneu11=insp11n+"-"+insp21n+"-"+insp31n;
und mit der setText kannst du dein Textfeld befüllen
Java:
txtInfoleiste.setText(getSpNeu11(););

--> edit: ich würde mir die Grundlagen über die Scopes nochmal ansehen.
 

Neue Themen


Zurück
Oben