import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.UIManager; public class BinConverter2 { final static Font LABEL_FONT = new Font(Font.SANS_SERIF, Font.PLAIN, 35); final static Font BUTTON_FONT = new Font(Font.SANS_SERIF, Font.PLAIN, 30); public static void main(String[] args) { /* Setter opp vinduet */ try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e) { System.exit(1); } JFrame vindu = new JFrame("Binaertall Converter"); vindu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /* Hovedpanelen (tegneflaten) */ JPanel panel = new JPanel(); panel.setLayout(new GridLayout(5, 1)); vindu.add(panel); /* Tekst og knapper for binaertall */ JLabel binLabel = new JLabel("Binaertall:"); binLabel.setHorizontalAlignment(JLabel.CENTER); binLabel.setFont(LABEL_FONT); panel.add(binLabel); JLabel binTallLabel = new JLabel(""); binTallLabel.setHorizontalAlignment(JLabel.CENTER); binTallLabel.setFont(LABEL_FONT); panel.add(binTallLabel); JPanel knappPanel = new JPanel(); panel.add(knappPanel); lagTallKnapper(binTallLabel, knappPanel); lagResetKnapp(binTallLabel, knappPanel); /* Tekst og knapp for konvertering til desimaltall */ JPanel konverterPanel = new JPanel(); panel.add(konverterPanel); JLabel desTallLabel = new JLabel(""); desTallLabel.setHorizontalAlignment(JLabel.CENTER); desTallLabel.setFont(LABEL_FONT); lagKonverterKnapp(binTallLabel, desTallLabel, konverterPanel); panel.add(desTallLabel); /* Pakker sammen og viser vinduet */ vindu.pack(); vindu.setVisible(true); } // Hjelpemetode for aa lage knappene for "0" og "1" private static void lagTallKnapper(JLabel binTallLabel, JPanel panel) { JButton knapp0 = new JButton("0"); JButton knapp1 = new JButton("1"); class LeggTilTall implements ActionListener { String tall; public LeggTilTall(String tall) { this.tall = tall; } @Override public void actionPerformed(ActionEvent e) { binTallLabel.setText(binTallLabel.getText() + tall); } } knapp0.addActionListener(new LeggTilTall("0")); knapp1.addActionListener(new LeggTilTall("1")); knapp0.setFont(BUTTON_FONT); knapp1.setFont(BUTTON_FONT); panel.add(knapp0); panel.add(knapp1); } // Lager "C"-knappen, som resetter input private static void lagResetKnapp(JLabel binTallLabel, JPanel panel) { JButton knappC = new JButton("C"); class FjernTekst implements ActionListener { JLabel label; public FjernTekst(JLabel label) { this.label = label; } @Override public void actionPerformed(ActionEvent e) { label.setText(""); } } knappC.setFont(BUTTON_FONT); knappC.addActionListener(new FjernTekst(binTallLabel)); panel.add(knappC); } // Lager knappen som konverterer input-tallet til desimal, og teksten som viser resultatet private static void lagKonverterKnapp(JLabel binTallLabel, JLabel desTallLabel, JPanel panel) { JButton konverterKnapp = new JButton("Konverter til desimal"); class Konverter implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String binary = binTallLabel.getText(); if (!binary.equals("")) { String decimal = Integer.parseInt(binary, 2) + ""; desTallLabel.setText(decimal); } } } konverterKnapp.addActionListener(new Konverter()); konverterKnapp.setFont(BUTTON_FONT); panel.add(konverterKnapp); } }