Ich verwende NetBeans 8.0.2. Ich habe mehrere Foren durchsucht, um eine Lösung für meine aktuelle Situation zu finden. Ich kann auf die Methode eines anderen Pakets innerhalb einer Klasse nicht zugreifen. Ich habe das erforderliche Paket importiert und versucht, eine Instanz der Klasse zu erstellen. Zum einem NetBeans eine rote Linie unter dem Code stellt sagen, dassKann keine Werte an Klasse in anderem Paket senden, da Paket nicht existiert
"Package sts2 does not exist. <identifier> expected"
nächste, wenn ich versuche, das Verfahren für den Zugriff auf das instanceName.methodName Format es keine Liste der verfügbaren Methoden nicht zeigt, es zeigt nur neu. "sts2" ist der Name der Instanz, die ich für die Klasse "Start2" erstellt habe. Die Klasse "Start2" befindet sich in einem Paket, das sich von der Klasse unterscheidet, die die abgerufene Eingabe verwendet. Ich habe die import-Anweisung verwendet, um das erforderliche Paket zu importieren.
Ich habe versucht, NetBeans neu zu starten, meinen Computer neu starten, aber es ist immer noch dasselbe. Grundsätzlich versuche ich, die Werte von Variablen zu sammeln und sie von einer Klasse zur anderen zu übergeben und Berechnungen mit diesen Werten durchzuführen. Diese Klassen sind GUIs, die sich mit Benutzereingaben befassen müssen.
Bitte beachten Sie, ich habe mehrere Beiträge über die Übergabe von Variablen zwischen den Klassen gesehen, aber es ist nicht wirklich im Einklang mit meiner derzeitigen misslichen Lage. Ist es möglich, Cross-Importe durchzuführen, wie Paket A importiert Paket B, um auf seine Methoden zuzugreifen, dann umgekehrt Paket B importiert Paket A, um auf seine Methoden zuzugreifen. Was mache ich hier falsch? Übergebe ich die Werte, wie ich sein sollte?
Weitere Informationen finden Sie im folgenden Code (ignorieren Sie, dass ich keine Standardpaketnamen vom Typ com.name.barewithme verwendet habe). Ich hoffe, mit dieser Aufgabe meine Kenntnisse und Fähigkeiten von JavaSE zu stärken.
Die Start2-Klasse, die die Daten abruft und sendet.
package home;
import Solution_screens.*;
public class Start2 extends javax.swing.JFrame {
//this is the Start2 class it recieves user input via GUI then sends to PayRoll class in different package ie Solutions_screens)
public void calcDisp(){
//this method is called from PayRoll class. it collects and sends the values over
String firstname = jTextField1.getText();
String sal1 = jTextField5.getText();
float sal = Integer.parseInt(sal1);
PayRoll p = new PayRoll(); //creating instance of the PayROll class so I can send retrieved values over there
p.userInput(firstname); //userInput method is defined in PayRoll class
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// this button was dragged in using NB DnD
PayRoll payr = new PayRoll(); //another instance of PayRoll to make it visible
payr.setVisible(true);
}
}
Nun ist die Payroll-Klasse
package Solution_screens;
import home.Start2;
public class PayRoll extends javax.swing.JFrame {
//here I only need the Start2 class and dont have to import all the classes of the package
Start2 sts2=new Start2(); //creating an instance of Start2 so I can access the calcDisp() method. It highlights sts2 to green, which should not be.
sts2.calcDisp(); // this is where the problem seems to be. NB gives the error that it does not exist
// this method is created to collect the values and work with them.
public void userInput(String name){
jTextArea1.setText(name);
}
}
Ich habe die IDE-Code generiert gelassen, wie sie scheinen gut funktioniert werden.
Sie können keine Anweisungen außerhalb einer Klasse platzieren. Ihre Klassendeklaration fehlt vollständig. Fügen Sie die Klasse hinzu und fügen Sie Ihre Initialisierungsanweisungen in einen Initialisiererblock oder in den Konstruktor ein. Sie können die folgenden Informationen überprüfen: https://docs.oracle.com/javase/tutorial/java/TOC.html –
@AndreasFester Vielen Dank, dass Sie darauf hingewiesen haben . Da mein Code sehr lang ist, hatte ich das Gefühl, dass ich nur die relevanten Teile herausbringen sollte, damit mein Problem schnell und genau gelöst werden kann. Natürlich ist eine Klasse in meinem Code deklariert. Ich habe auch keine Kommentare außerhalb der Klassen. Ich werde bearbeiten, was ich gepostet habe, um Missverständnisse zu vermeiden. Auch dein Vorschlag ist eines der Dinge, die ich ausprobiert habe und es hat nicht funktioniert. – user3650467
Sie sollten dann nicht Dinge auslassen, die nicht kompilieren, sondern eine [MVCE] (http://stackoverflow.com/help/mcve) bereitstellen. Der fehlende Teil hier ist C, für vollständig. –