/** * A graphical user interface for the calculator. No calculation is being * done here. This class is responsible just for putting up the display on * screen. */ public class CalculatorGUI implements ActionListener { private CalculatorUI ui; private JFrame frame; private JTextField display; private JLabel status; private static String version = "version 1.0"; private String displaystring; private State state; private CalculatorEngine engine = new CalculatorEngine(true);
/** * Creates a user interface for a given calculator. */ public CalculatorGUI() { makeFrame(); frame.setVisible(true); displaystring = ""; }
/** * Make this interface visible again. (Has no effect if it is already * visible.) */ public void setVisible(boolean visible) { frame.setVisible(visible); }
/** * Makes the frame for the user interface. */ private void makeFrame() { //Create a Frame window with a title frame = new JFrame("The ITD12 Calculator"); //Make a menu bar makeMenuBar(frame);
//Get the content pane for this frame to hold GUI-components Container contentPane = frame.getContentPane();
//Set a border layout for the content pane contentPane.setLayout(new BorderLayout());
//Create a text field window display = new JTextField();
//Create a label status = new JLabel("Morten og Jesper");
//Place the text field in the content panes northern border contentPane.add(display, BorderLayout.NORTH); //Place the label in the content panes southern border contentPane.add(status, BorderLayout.SOUTH);
//Place the button panel in the content panes center border contentPane.add(buttonPanel, BorderLayout.CENTER);
//Make the window fit the layouts set up frame.pack(); }
/** * Sets up a menubar with menus and menu items */ private void makeMenuBar(JFrame frame) { //Create a menu bar JMenuBar menuBar = new JMenuBar(); //Add it to the frame frame.setJMenuBar(menuBar);
//Create a menu JMenu helpMenu = new JMenu("Help"); //Push the menu to the right menuBar.add(Box.createHorizontalGlue()); //Add it to the menu bar menuBar.add(helpMenu);
//Create a menu item JMenuItem aboutItem = new JMenuItem("About"); //add it to the help menu helpMenu.add(aboutItem); //add this object to the action listener aboutItem.addActionListener(this);
}
/** * Add a button to the button panel. */ private void addButton(JPanel buttonPanel, String buttonText) { JButton button = new JButton(buttonText); button.addActionListener(this); buttonPanel.add(button); }
private void onAbout() { JOptionPane.showMessageDialog(frame, "Simple calculator " + version + "\n" + "Created by Kaleb & Fatih"); }
/** * An interface action has been performed. Find out what it was and * handle it. */ public void actionPerformed(ActionEvent event) { String command = event.getActionCommand();
if (command.equals("About")) { onAbout(); return; }
char chr = command.charAt(0);
displaystring += command;
display.setText(displaystring);
state.ui.parseInput(chr);
System.out.println("Test result from CalculatorGUI : " + state.engine.getResult());
Vi fik den af vores lære, da vi ik havde tid til at lave den selv. Skal lige siges at jeg er lige begyndt med at programmere. Men til eksamen SKAL jeg vide hvad der sker i koden.
Det tager bare lang tid skriftligt at gå igennem koden synes jeg... men kan fortælle det første der sker når din GUI bliver oprettet er det inde i konstruktøren
public CalculatorGUI() { makeFrame(); frame.setVisible(true); displaystring = ""; }
din konstruktør kalder nogen metoder... makeFrame() som laver din brugergrænseflade og setVisible() som gør din frame synlig!(frame = brugergrænseflade)
din String displaystring bliver sat til at være tom.. altså indeholde ingen tegn... for ellers ville den have en værdi "null" og så vil du få en fejl når programmet starter.
ø//Create a Frame window with a title ø//Make a menu bar ø//Get the content pane for this frame to hold GUI-components ø//Set a border layout for the content pane ø//Create a text field window
ø//Create a label ø//Place the text field in the content panes northern border ø//Place the label in the content panes southern border ø//Now create a button panel with a grid layout holding all the buttons //The grid has 5 rows and 4 columns ø//Row 1 ø//Row 2 ø//Row 3 ø//Row 4
ø//Row 5 ø//Place the button panel in the content panes center border ø//Make the window fit the layouts set up
så står koden under hver enkelt... så den er vel beskrevet... bare på engelsk
en reference betyder at du har oprettet en variabel som kan pege på et bestemt type objekt (String's er objekter... og de fleste klasser er objekter.. dvs skabeloner man kan lave objekter af)
når du skriver
String display;
betyder det egentlig at display er en kopi af String... så alt en string kan kan en display også... og string kan i hvertfald gemme på tekst... så derfor kan du også gemme tekst i display for det er jo en kopi. Det er bare sådan at det kun er en reference på nuværende tidspunkt.. du har ikke initialiseret den.. dvs givet den nogen værdi.
det gør du bagefter ved at skrive
display = "et eller andet her bare det er ..alt mulig tekst";
Det gælder alle sammen..
fx
CalculatorEngine engine = new CalculatorEngine(true);
opretter et objekt af klassen/skabelonen CalculatorEngine
du har sikkert koden til denne klasse... kig i den.. se hvad den kan gøre... nu kan vores kopi "engine" præcis det samme som det der står i din CalculatorEngine klasse
Ligger lige et svar... men kig igennem.. se om der er mere du lige mangler så skal jeg se om jeg kan svare: )
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.