2 Punkte - BFH

Werbung
Zwischenprüfung im Fach Java-GUI-Programmierung, Herbstsemester 2011
Dozent: Peter Füss
Name:
Klasse:
1. Aufgabe (2 Punkte):
Welches Layout wird mit Sourcecode1 erzeugt? Bitte Zutreffendes ankreuzen!
O
O
O
2. Aufgabe (3 Punkte):
Folgendes Programm hat runde Buttons. In der Swing-Library gibt es zwar die Klasse
JButton, welche aber keine Methode zur Verfügung stellt, um Buttons rund zu machen. Mit
welchem objektorientiertem Mittel kann JButton für diesen Zweck trotzdem eingesetzt
werden? Nennen Sie kurz die beiden wesentlichen Schritte für die Realisierung, schreiben
Sie aber keinen Source-Code!
Objektorientiertes Mittel: Vererbung
1.Schritt: neue Klasse (z.B. RoundButton)
von JButton ableiten
2.Schritt: paint(Graphics g) überschreiben
Name:
Klasse:
3. Aufgabe (5 Punkte)
Welche der folgenden Aussagen sind für Java richtig? Bitte die Richtigen ankreuzen!
richtig
- Eine Klasse kann nur eine direkte Basisklasse haben
- Eine Klasse kann beliebig viele Interfaces implementieren
- Alle Methoden in einer abstrakte Klasse müssen abstrakt sein
- Ein Interface darf nur Konstanten und abstrakte Methoden enthalten
- Von einer abstrakten Klasse können beliebig viele Objekte erzeugt werden.
4. Aufgabe (2 Punkte)
O
O
O
O
O
public class Report implements Printable {
public void print() {
public interface Printable {
public void print();
}
}
}
Schreiben Sie eine Klasse Report, welche nur das Nötigste enthält, damit ein Objekt dieser
Klasse beim Aufruf folgender Methode übergeben werden kann:
public void sendToPrinter(Printable p)
5. Aufgabe (4 Punkte)
Ergänzen Sie Sourcecode 2 auf dem Zusatzblatt so, dass bei einem Click auf einen Button
der jeweilige Buttontext im Display angezeigt wird!
6. Aufgabe (Zusatzaufgabe) (4 Punkte)
Erweitern Sie das Programm aus Aufgabe 5 so, dass bei einem Buttonclick jeweils auch der
entsprechende Label rot umrandet wird
Hilfestellungen:
einen Rahmen löscht man wie folgt:
setBorder(null)
Code um die Labels in labelPanel zu iterieren:
for(Component label:labelPanel.getComponents()) {
JLabel l=(JLabel)label;
}
//imports must not be done
public class MainFrame extends JFrame //beginn of class MainFrame
implements ActionListener
{
Container contentPane=this.getContentPane();
String bLabels="0123456789";
JTextField display;
JPanel labelPanel;
public MainFrame(String title) {
super(title);
this.setSize(320,220);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
contentPane.setLayout(new BorderLayout());
contentPane.add(getNorthernPanel(),BorderLayout.NORTH);
contentPane.add(getMainPanel(),BorderLayout.CENTER);
}
private JPanel getMainPanel() {
JPanel p = new JPanel();
p.setLayout(new FlowLayout(FlowLayout.CENTER));
p.setFont(new Font("Arial",Font.BOLD,60));
for(int i=0;i<bLabels.length();i++) {
JButton temp;
p.add(temp=new JButton(""+bLabels.charAt(i)));
temp.addActionListener(this);
}
p.setBorder(BorderFactory.createMatteBorder(5, 5, 5, 5, Color.gray));
return p;
}
private JPanel getNorthernPanel() {
JPanel p=new JPanel();
labelPanel=new JPanel();
display=new JTextField("0");
for(int i=0;i<bLabels.length();i++) {
labelPanel.add(new JLabel(""+bLabels.charAt(i)));
}
p.setLayout(new BorderLayout());
p.add(labelPanel,BorderLayout.NORTH);
p.add(display,BorderLayout.SOUTH);
display.setEditable(false);
display.setHorizontalAlignment(JTextField.CENTER);
display.setBackground(Color.white);
display.setFont(new Font("Arial",Font.PLAIN,64));
p.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
return p;
}
public static void main(String[] args) {
MainFrame mf= new MainFrame("Java Test");
mf.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
display.setText(e.getActionCommand()); //Aufgabe 5
for(Component label:labelPanel.getComponents()) {
//Aufgabe 6
JLabel l=(JLabel)label;
if(l.getText().equals(e.getActionCommand())
l.setBorder(BorderFactory.createLineBorder(Color.red);
else
l.setBorder(null);
}
}
Herunterladen