Hejho ich bin dabei einen Grafischen Taschenrechner für mein Jahresprojekt zu programmieren.
Wie ihr seht das ungefähre Koordinatensystem hab ich erstellt. Mein Hauptproblem ist jetzt zu schaffen, dass man die Achsenskalierung beliebig ändern kann. Dazu kommt die einteilung, kp wie man das eleganter machen kann als so wie ich damit angefangen habe.
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
/**
*
* description
*
* @xxx
*/
public class GTR extends JFrame
{
// Anfang Attribute
private JLabel display1 = new JLabel();
private JLabel display2 = new JLabel();
private JButton Null = new JButton();
private JButton eins = new JButton();
private JButton zwei = new JButton();
private JButton drei = new JButton();
private JButton vier = new JButton();
private JButton fuenf = new JButton();
private JButton sechs = new JButton();
private JButton sieben = new JButton();
private JButton acht = new JButton();
private JButton neun = new JButton();
private JButton punkt = new JButton();
private JButton minus = new JButton();
private JButton plus = new JButton();
private JButton mal = new JButton();
private JButton geteilt = new JButton();
private JButton enter = new JButton();
private JButton pi = new JButton();
private JButton hoch2 = new JButton();
private JButton wurzel = new JButton();
private JButton variable = new JButton();
boolean start = true;
private String lastCommand;
private double result;
JFrame fenster = null;
JPanel hauptFlaeche = null;
ZeichenFlaeche zeichenFlaeche = null;
JFrame kasten = null;
JPanel hauptKasten = null;
ZeichenFlaeche zeichenKasten = null;
private JButton delete = new JButton();
private JButton graph = new JButton();
// Ende Attribute
public GTR (String title)
{
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 617;
int frameHeight = 696;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
Container cp = getContentPane();
cp.setLayout(null);
cp.setBackground(new Color(0xB8CFE5));
zeichne();
Linie();
// Anfang Komponenten
Null.setBounds(88, 288, 60, 40);
Null.setText("0");
Null.setMargin(new Insets(2, 2, 2, 2));
Null.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
Null_ActionPerformed(evt);
String text = display1.getText();
text += "0";
display1.setText(text);
}
});
cp.add(Null);
eins.setBounds(88, 240, 60, 40);
eins.setText("1");
eins.setMargin(new Insets(2, 2, 2, 2));
eins.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
eins_ActionPerformed(evt);
String text = display1.getText();
text += "1";
display1.setText(text);
}
});
cp.add(eins);
zwei.setBounds(160, 240, 60, 40);
zwei.setText("2");
zwei.setMargin(new Insets(2, 2, 2, 2));
zwei.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
zwei_ActionPerformed(evt);
String text = display1.getText();
text += "2";
display1.setText(text);
}
});
cp.add(zwei);
drei.setBounds(232, 240, 60, 40);
drei.setText("3");
drei.setMargin(new Insets(2, 2, 2, 2));
drei.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
drei_ActionPerformed(evt);
String text = display1.getText();
text += "3";
display1.setText(text);
}
});
cp.add(drei);
vier.setBounds(88, 192, 60, 40);
vier.setText("4");
vier.setMargin(new Insets(2, 2, 2, 2));
vier.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
vier_ActionPerformed(evt);
String text = display1.getText();
text += "4";
display1.setText(text);
}
});
cp.add(vier);
fuenf.setBounds(160, 192, 60, 40);
fuenf.setText("5");
fuenf.setMargin(new Insets(2, 2, 2, 2));
fuenf.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
fuenf_ActionPerformed(evt);
String text = display1.getText();
text += "5";
display1.setText(text);
}
});
cp.add(fuenf);
sechs.setBounds(232, 192, 60, 40);
sechs.setText("6");
sechs.setMargin(new Insets(2, 2, 2, 2));
sechs.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
sechs_ActionPerformed(evt);
String text = display1.getText();
text += "6";
display1.setText(text);
}
});
cp.add(sechs);
sieben.setBounds(88, 144, 60, 40);
sieben.setText("7");
sieben.setMargin(new Insets(2, 2, 2, 2));
sieben.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
sieben_ActionPerformed(evt);
String text = display1.getText();
text += "7";
display1.setText(text);
}
});
cp.add(sieben);
acht.setBounds(160, 144, 60, 40);
acht.setText("8");
acht.setMargin(new Insets(2, 2, 2, 2));
acht.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
acht_ActionPerformed(evt);
String text = display1.getText();
text += "8";
display1.setText(text);
}
});
cp.add(acht);
neun.setBounds(232, 144, 60, 40);
neun.setText("9");
neun.setMargin(new Insets(2, 2, 2, 2));
neun.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
neun_ActionPerformed(evt);
String text = display1.getText();
text += "9";
display1.setText(text);
}
});
cp.add(neun);
punkt.setBounds(160, 288, 60, 40);
punkt.setText(".");
punkt.setMargin(new Insets(2, 2, 2, 2));
punkt.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
punkt_ActionPerformed(evt);
String text = display1.getText();
text += ".";
display1.setText(text);
}
});
cp.add(punkt);
minus.setBounds(304, 192, 60, 40);
minus.setText("-");
minus.setMargin(new Insets(2, 2, 2, 2));
minus.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
String text = display1.getText();
text += "-";
display1.setText(text);
}
});
cp.add(minus);
plus.setBounds(304, 144, 60, 40);
plus.setText("+");
plus.setMargin(new Insets(2, 2, 2, 2));
plus.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
plus_ActionPerformed(evt);
String text = display1.getText();
text += "+";
display1.setText(text);
}
});
cp.add(plus);
mal.setBounds(304, 240, 60, 40);
mal.setText("*");
mal.setMargin(new Insets(2, 2, 2, 2));
mal.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
mal_ActionPerformed(evt);
String text = display1.getText();
text += "*";
display1.setText(text);
}
});
cp.add(mal);
geteilt.setBounds(304, 288, 60, 40);
geteilt.setText("÷");
geteilt.setMargin(new Insets(2, 2, 2, 2));
geteilt.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
geteilt_ActionPerformed(evt);
String text = display1.getText();
text += "/";
display1.setText(text);
}
});
cp.add(geteilt);
enter.setBounds(232, 288, 60, 40);
enter.setText("Enter");
enter.setMargin(new Insets(2, 2, 2, 2));
enter.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
enter_ActionPerformed(evt);
String rechnung = display1.getText();
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("js");
try{
String text = (engine.eval(rechnung)).toString();
display1.setText(text);
} catch(Exception e){}
}
});
cp.add(enter);
pi.setBounds(376, 192, 60, 40);
pi.setText("?");
pi.setMargin(new Insets(2, 2, 2, 2));
pi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
pi_ActionPerformed(evt);
}
});
cp.add(pi);
hoch2.setBounds(376, 240, 60, 40);
hoch2.setText("x²");
hoch2.setMargin(new Insets(2, 2, 2, 2));
hoch2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
hoch2_ActionPerformed(evt);
}
});
cp.add(hoch2);
wurzel.setBounds(376, 288, 60, 40);
wurzel.setText("v");
wurzel.setMargin(new Insets(2, 2, 2, 2));
wurzel.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
wurzel_ActionPerformed(evt);
}
});
cp.add(wurzel);
variable.setBounds(376, 144, 60, 40);
variable.setText("x");
variable.setMargin(new Insets(2, 2, 2, 2));
variable.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
variable_ActionPerformed(evt);
}
});
cp.add(variable);
delete.setBounds(448, 144, 60, 40);
delete.setText("C");
delete.setMargin(new Insets(2, 2, 2, 2));
delete.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
delete_ActionPerformed(evt);
display1.setText("");
}
});
cp.add(delete);
display1.setBounds(90, 30, 420, 90);
display1.setText("");
display1.setOpaque(true);
cp.add(display1);
graph.setBounds(448, 192, 60, 40);
graph.setText("Graph");
graph.setMargin(new Insets(2, 2, 2, 2));
graph.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
fenster.setVisible(true);
}
});
cp.add(graph);
// Ende Komponenten
setResizable(false);
setVisible(true);
}
// Anfang Methoden
public void Linie()
{
zeichenFlaeche.setzeLinie(50, 350, 750, 350); // x- Achse
zeichenFlaeche.setzeLinie(400, 50, 400, 650); // y- Achse
zeichenFlaeche.setzeLinie(420, 345, 420, 355);
zeichenFlaeche.setzeLinie(440, 345, 440, 355);
zeichenFlaeche.setzeLinie(460, 345, 460, 355);
zeichenFlaeche.setzeLinie(480, 345, 480, 355);
zeichenFlaeche.setzeLinie(500, 345, 500, 355);
}
public void zeichne()
{
fenster = new JFrame();
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.setTitle("Koordinatensystem");
hauptFlaeche = new JPanel(new BorderLayout());
zeichenFlaeche = new ZeichenFlaeche(800, 700);
hauptFlaeche.add(zeichenFlaeche, BorderLayout.CENTER);
fenster.getContentPane().add(hauptFlaeche);
fenster.pack();
fenster.setVisible(false);
}
public void Null_ActionPerformed(ActionEvent evt)
{
// TODO hier Quelltext einfügen
}
public void eins_ActionPerformed(ActionEvent evt)
{
// TODO hier Quelltext einfügen
}
public void zwei_ActionPerformed(ActionEvent evt)
{
// TODO hier Quelltext einfügen
}
public void drei_ActionPerformed(ActionEvent evt)
{
// TODO hier Quelltext einfügen
}
public void vier_ActionPerformed(ActionEvent evt)
{
// TODO hier Quelltext einfügen
}
public void fuenf_ActionPerformed(ActionEvent evt)
{
// TODO hier Quelltext einfügen
}
public void sechs_ActionPerformed(ActionEvent evt)
{
// TODO hier Quelltext einfügen
}
public void sieben_ActionPerformed(ActionEvent evt)
{
// TODO hier Quelltext einfügen
}
public void acht_ActionPerformed(ActionEvent evt)
{
// TODO hier Quelltext einfügen
}
public void neun_ActionPerformed(ActionEvent evt)
{
// TODO hier Quelltext einfügen
}
public void punkt_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}
public void minus_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}
public void plus_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}
public void mal_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}
public void geteilt_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}
public void enter_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}
public void pi_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}
public void hoch2_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}
public void wurzel_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}
public void variable_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}
public void delete_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}
// Ende Methoden
public static void main(String[] args)
{
new GTR("GTR");
}
}
Wie ihr seht das ungefähre Koordinatensystem hab ich erstellt. Mein Hauptproblem ist jetzt zu schaffen, dass man die Achsenskalierung beliebig ändern kann. Dazu kommt die einteilung, kp wie man das eleganter machen kann als so wie ich damit angefangen habe.