Hallo Java-Experte, Ich versuche Java zu lernen. Also habe ich ein grundlegendes Problem geübt. In diesem Fall ist es meine Idee, dem Benutzer zwei Zahlen zu geben und diese dann basierend auf der Benutzeranforderung (plus/minus) zu berechnen. Was ich leicht machen kann, aber ich versuche, dieses Problem in JFrame zu implementieren und habe nicht erreicht, was ich tun möchte !! Ich bekomme den Fehler, wenn ich versuche, diese Zahlen über window.number1 und window.number2 zu übergeben. Fehlermeldung:Call statische Methode von einer Klasse zu Jframe-Klasse
window cannot be resolved to a variable
So jemand kann mir helfen, herauszufinden, wo ich mein Programm ändern muß.
Calculate.java
package day1.examples;
public class Calculate {
double number1;
double number2;
public double[] calculateNumber() {
double plus = number1+number2;
double minus = number1-number2;
return new double[] {plus,minus};
}
}
TestCalculate.java
package day1.examples;
import java.awt.EventQueue;
import java.awt.Window;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
public class TestCalculate {
private JFrame frame;
private JTextField textFieldNum1;
private JTextField textFieldNum2;
private JTextField textFieldTotRes;
private JLabel lblNewTlabelTotNum;
private JLabel lblNewLabelNum1;
private JLabel lblNewLabelNum2;
private JComboBox<Object> comboBoxNum;
private double totalres;
private String itemselect;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TestCalculate window = new TestCalculate();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public TestCalculate() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
textFieldNum1 = new JTextField();
textFieldNum1.setBounds(10, 37, 106, 25);
frame.getContentPane().add(textFieldNum1);
textFieldNum1.setColumns(10);
textFieldNum2 = new JTextField();
textFieldNum2.setBounds(194, 37, 106, 25);
frame.getContentPane().add(textFieldNum2);
textFieldNum2.setColumns(10);
JButton btnNewsButtonEnter = new JButton("Enter");
btnNewsButtonEnter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
final double num1;
final double num2;
try {
num1 = Double.parseDouble(textFieldNum1.getText());
num2 =Double.parseDouble(textFieldNum2.getText());
window.number1 = num1;
window.number2 = num2;
comboBoxNum.addActionListener(new ActionListener() {
if ((comboBoxNum.getSelectedItem()) == "Plus") {
totalres = window.calculateTotalPay()[0];
itemselect ="Plus";
} else if ((comboBoxNum.getSelectedItem()) == "Minus") {
totalres = window.calculateTotalPay()[1];
itemselect ="Minus";
}
if (itemselect == "Plus" || itemselect == "Minus"){
textFieldTotRes.setText(Double.toString(totalres));
} else {
JOptionPane.showMessageDialog(null, "Enter valid option");
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Enter valid number");
}
}
});
JButton btnNewButtonClear = new JButton("Clear");
btnNewButtonClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
reset();
}
});
btnNewsButtonEnter.setBounds(20, 74, 84, 25);
frame.getContentPane().add(btnNewsButtonEnter);
btnNewButtonClear.setBounds(204, 74, 84, 25);
frame.getContentPane().add(btnNewButtonClear);
textFieldTotRes = new JTextField();
textFieldTotRes.setBounds(198, 155, 200, 50);
frame.getContentPane().add(textFieldTotRes);
textFieldTotRes.setColumns(10);
lblNewTlabelTotNum = new JLabel("Result");
lblNewTlabelTotNum.setFont(new Font("Garuda", Font.BOLD | Font.ITALIC, 14));
lblNewTlabelTotNum.setBounds(29, 162, 106, 34);
frame.getContentPane().add(lblNewTlabelTotNum);
lblNewLabelNum1 = new JLabel("Enter 1st Number");
lblNewLabelNum1.setBounds(10, 0, 106, 34);
frame.getContentPane().add(lblNewLabelNum1);
lblNewLabelNum2 = new JLabel("Enter 2nd Number");
lblNewLabelNum2.setBounds(194, 0, 97, 40);
frame.getContentPane().add(lblNewLabelNum2);
comboBoxNum = new JComboBox<Object>();
comboBoxNum.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(comboBoxNum.getSelectedItem());
}
});
comboBoxNum.setModel(new DefaultComboBoxModel<Object>(new String[] {"--------------", "Plus", "Minus"}));
comboBoxNum.setBounds(331, 37, 58, 40);
frame.getContentPane().add(comboBoxNum);
}
public void reset() {
textFieldNum1.setText("");
textFieldNum2.setText("");
textFieldTotRes.setText("");
}
}
"* nicht erreicht *" ist nicht aussagekräftig genug. Erhalten Sie irgendwelche Fehler? Ist die Ausgabe und/oder das Verhalten anders als erwartet? Irgendwelche anderen Details? –