import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Kalkulator {
private static JLabel tekst = new JLabel("0");
private static String forrigeTall = "";
private static int knappStorrelse = 140;
private static String operasjon = "+";
public static void main(String[] args) {
JFrame vindu = new JFrame("Kalkulator");
vindu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
vindu.add(panel);
lagTekstStil();
panel.add(tekst);
JPanel knapper = new JPanel();
panel.add(knapper);
knapper.setLayout(new GridLayout(4,3));
knapper.setBackground(Color.BLACK);
leggTilTallKnapper(knapper);
LeggTilOperasjonsKnapper(knapper);
panel.setBackground(Color.BLACK);
vindu.pack();
vindu.setVisible(true);
}
private static void lagTekstStil(){
tekst.setBackground(Color.BLACK);
tekst.setForeground(Color.WHITE);
tekst.setOpaque(true);
tekst.setFont(new Font("times new roman" ,Font.ITALIC, 40));
tekst.setAlignmentX(Component.CENTER_ALIGNMENT);
tekst.setPreferredSize(new Dimension(knappStorrelse * 4, knappStorrelse));
}
private static void leggTilTallKnapper(JPanel panel) {
class TallKnapp extends JButton {
public TallKnapp(String tall){
super(tall);
setForeground(Color.WHITE);
setBackground(Color.BLACK);
setPreferredSize(new Dimension(knappStorrelse, knappStorrelse));
setFont(new Font("times new roman" ,Font.CENTER_BASELINE, 40));
addActionListener(new TallAction());
}
class TallAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
String nyTekst = tekst.getText();
if(! getText().equals(".")){
if(nyTekst.equals("0")){
nyTekst = "";
}
}else{
if(nyTekst.contains(".")) return;
}
nyTekst += getText();
tekst.setText(nyTekst);
}
}
}
int teller = 9;
for(int i = 0; i < 3; i++){
for(int j = 2; j >= 0; j--){
String tall = Integer.toString(teller - j);
TallKnapp knapp = new TallKnapp(tall);
panel.add(knapp);
}
teller -= 3;
}
panel.add(new TallKnapp("0"));
panel.add(new TallKnapp("."));
}
private static void LeggTilOperasjonsKnapper(JPanel panel) {
class OperasjonsKnapp extends JButton {
public OperasjonsKnapp(String operasjon){
super(operasjon);
setBackground(Color.ORANGE);
setForeground(Color.BLACK);
setPreferredSize(new Dimension(knappStorrelse, knappStorrelse));
setFont(new Font("times new roman" ,Font.BOLD, 40));
addActionListener(new OperasjonAction());
}
class OperasjonAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
if(getText().equals("=")){
if(forrigeTall.equals("")) return;
Double tall1 = 0.0, tall2 = 0.0;
try{
tall1 = Double.parseDouble(forrigeTall);
tall2 = Double.parseDouble(tekst.getText());
}catch(Exception exception){
return;
}
Double resultat = 0.0;
if(operasjon.equals("+")){
resultat = tall1 + tall2;
}else if(operasjon.equals("-")){
resultat = tall1 - tall2;
}else if(operasjon.equals("/")){
resultat = tall1 / tall2;
}else if(operasjon.equals("*")){
resultat = tall1 * tall2;
}
forrigeTall = "";
tekst.setText(Double.toString(resultat));
}else{
System.out.println("lol");
operasjon = getText();
forrigeTall = tekst.getText();
tekst.setText("0");
}
}
}
}
panel.add(new OperasjonsKnapp("+"), 3);
panel.add(new OperasjonsKnapp("-"), 7);
panel.add(new OperasjonsKnapp("*"), 11);
panel.add(new OperasjonsKnapp("="), 12);
panel.add(new OperasjonsKnapp("/"), 15);
}
}