File #obooek51-2867 - JAVA - Sourcecode
Uploaded by greenlight - 07/03/2010 18:26 - 38 Views
Source code
package de.musin.bsinfo.rechner.lib;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
/*** Frame für den Taschenrechner. <br>* Implementiert {@link Runnable} um als eigenständiges {@link Thread} zu laufen.<br>* Implementiert {@link ViewControl} damit der Controller zugriff auf das Text-Feld hat.** @author Andreas Fischer @ 2010**/public final class View extends JFrame implements ViewControl, Runnable
{private static final long serialVersionUID = 5579061763087229590L;
private final JTextField textField;
private final Control control;
/*** Erstellt das Frame.** @param control* {@link Control} für den Listener.*/public View(Control control)
{super("Taschenrechner");
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{System.exit(0);
}});
setLayout(new GridBagLayout());
// control als Instanzvariable speichernthis.control = control;
// Textfeld rechtsbündig und nicht editierbartextField = new JTextField("0");
textField.setHorizontalAlignment(JTextField.RIGHT);
textField.setEditable(false);
add(textField, createGBC(0, 0, 5, 1));
// Alle Buttons in ReihenfolgeaddButton(0, 1, 1, 1, "1");
addButton(1, 1, 1, 1, "2");
addButton(2, 1, 1, 1, "3");
addButton(3, 1, 2, 1, "C");
addButton(0, 2, 1, 1, "4");
addButton(1, 2, 1, 1, "5");
addButton(2, 2, 1, 1, "6");
addButton(3, 2, 1, 1, "+");
addButton(4, 2, 1, 1, "-");
addButton(0, 3, 1, 1, "7");
addButton(1, 3, 1, 1, "8");
addButton(2, 3, 1, 1, "9");
addButton(3, 3, 1, 1, "÷");
addButton(4, 3, 1, 1, "*");
addButton(0, 4, 1, 1, "0");
addButton(1, 4, 1, 1, ",");
addButton(2, 4, 1, 1, "±");
addButton(3, 4, 2, 1, "=");
pack();
setResizable(false);
}public String getText()
{return textField.getText();
}public void setText(String text)
{textField.setText(text);
}public void append(String text)
{textField.setText(getText() + text);
}public void clear()
{textField.setText("0");
}/*** Fügt einen neuen {@link CoolButton} in das ContentPane des Frames ein.** @param x* Position X im {@link GridBagLayout}* @param y* Position Y im {@link GridBagLayout}* @param width* Zellen-Spannweite horizontal* @param height* Zellen-Spannweite vertikal* @param value* Button Text*/private void addButton(int x, int y, int width, int height, String value)
{CoolButton btn = new CoolButton(value);
btn.addActionListener(control);
GridBagConstraints gbc = createGBC(x, y, width, height);
// noch ein wenig die Größe veränderngbc.ipadx = 30;
gbc.ipady = 12;
add(btn, gbc);
}/*** Erstellt einen generisches {@link GridBagConstraints} Objekt mit default Werten.** @param x* Position X* @param y* Position Y* @param width* Zellen-Spannweite horizontal* @param height* Zellen-Spannweite vertikal* @return Ein neues {@link GridBagConstraints} Objekt*/private GridBagConstraints createGBC(int x, int y, int width, int height)
{GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.CENTER;
gbc.insets = new Insets(2, 2, 2, 2);
return gbc;
}public void run()
{// Frame zentrieren und anzeigenDimension screen = Toolkit.getDefaultToolkit().getScreenSize();
setLocation(screen.width / 2 - getWidth() / 2, screen.height / 2 - getHeight() / 2);
setVisible(true);
}}
