S
Spellsleeper
Gast
Hallo liebe Mitentwickler,
ich habe eine reine Verständinissfrage zu einem Tutorial welches ich mir angesehen habe(Tutorial)
Meine Frage bezieht sich auf die Klasse CommandAction.
Wie kann das mit dem command.equals("-") funktionieren, ich dachte die Objekte die mit equals() verglichen werden müssten identisch sein für den Wert true, aber hier scheint ein Zeichen fast alle anderen abzudecken.
PS.Es funktioniert habe es ausprobiert.
ich habe eine reine Verständinissfrage zu einem Tutorial welches ich mir angesehen habe(Tutorial)
Meine Frage bezieht sich auf die Klasse CommandAction.
Java:
String command=event.getActionCommand();
if(start){
if(command.equals("-")){
display.setText(command);
start=false;
}else{
lastCommand=command;
}
}else{
calculate(Double.parseDouble(display.getText()));
lastCommand=command;
start=true;
}
}
PS.Es funktioniert habe es ausprobiert.
Java:
package main;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
public class CalcPanel extends JPanel {
public CalcPanel(){
setPreferredSize(new Dimension(300,300));
result=0;
lastCommand="=";
start=true;
setLayout(new BorderLayout());
display=new JButton("0");
display.setPreferredSize(new Dimension(300,50));
display.setFont(new Font(Font.SANS_SERIF,Font.BOLD,26));
display.setBorder(new BevelBorder(BevelBorder.LOWERED));
display.setEnabled(false);
add(display,BorderLayout.NORTH);
ActionListener insert=new InsertAction();
ActionListener command=new CommandAction();
panel=new JPanel();
panel.setLayout(new GridLayout(4,4));
add(panel,BorderLayout.CENTER);
addButton("7",insert);
addButton("8",insert);
addButton("9",insert);
addButton("/", command);
addButton("4",insert);
addButton("5",insert);
addButton("6",insert);
addButton("*", command);
addButton("1",insert);
addButton("2",insert);
addButton("3",insert);
addButton("-", command);
addButton("0",insert);
addButton(".",insert);
addButton("=", command);
addButton("+", command);
}
private void addButton(String label,ActionListener listener){
JButton button=new JButton(label);
button.addActionListener(listener);
button.setFont(new Font(Font.SERIF,Font.PLAIN,18));
button.setBackground(Color.LIGHT_GRAY);
panel.add(button);
}
private class InsertAction implements ActionListener{
public void actionPerformed(ActionEvent event){
String input=event.getActionCommand();
if(start){
display.setText("");
start=false;
}
display.setText(display.getText()+input);
}
}
private class CommandAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String command=event.getActionCommand();
if(start){
if(command.equals("-")){
display.setText(command);
start=false;
}else{
lastCommand=command;
}
}else{
calculate(Double.parseDouble(display.getText()));
lastCommand=command;
start=true;
}
}
}
public void calculate(double x){
if(lastCommand.equals("+"))result+=x;
else if(lastCommand.equals("-"))result-=x;
else if(lastCommand.equals("*"))result*=x;
else if(lastCommand.equals("/"))result/=x;
else if(lastCommand.equals("="))result=x;
display.setText(""+result);
}
private boolean start;
private JButton display;
private JPanel panel;
private String lastCommand;
private double result;
}