Moinsen Leute!
Seit zwei Tagen beschäftige ich mich zum ersten Mal mit Swing unter Java.
Bis dato war ich nur auf der Konsole mit kleinen Sachen tätig.
Nun aber folgendes Problem.
Ich habe zunächst eine Menüleiste mit Items eingefügt. Funktioniert tadellos. Nun wollte ich mittels public void paint(Graphics g) einfache Sachen zeichnen. Beispielsweise mit [B]drawRect[B] irgendwas. Sobald ich aber nur public void paint(Graphics g) { } so eingebaut habe und das Programm starte, wird die Menüleiste nicht mehr angezeigt. Ich kann jene zwar noch blind anwählen, doch das ist ja auch nicht das Wahre. Ist bestimmt nur ein Anfängerfehler. Die Menübar wird also vom Zeichenfeld überdeckt.
Doch wie und wo mache ich es besser?
Ich habe jedenfalls mal den Code beigelegt.
Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.Component.*;
import javax.swing.*;
public class MainFrame extends JFrame implements ActionListener
{
public MainFrame()
{
super("Mission One");
/****** Menü-Einträge erstellen ******/
JMenu dateiMenu, optMenu, aboutMenu;
JMenuBar mBar;
JMenuItem mi;
/* Menüpunkt 1 */
dateiMenu = new JMenu("Datei");
mi = new JMenuItem("Neues Spiel");
mi.addActionListener(this);
dateiMenu.add(mi);
dateiMenu.addSeparator(); /* Trennstrich */
mi = new JMenuItem("Exit");
mi.addActionListener(this);
dateiMenu.add(mi);
/* Menüpunkt 2 */
optMenu = new JMenu("Optionen");
mi = new JMenuItem("Mensch vs. Mensch");
mi.addActionListener(this);
optMenu.add(mi);
mi = new JMenuItem("Mensch vs. Computer");
mi.setEnabled(false);
mi.addActionListener(this);
optMenu.add(mi);
/* Menüpunkt 3 */
aboutMenu = new JMenu("Info");
mi = new JMenuItem("About");
mi.addActionListener(this);
aboutMenu.add(mi);
/* alles zusammenklatschen */
mBar = new JMenuBar();
mBar.add(dateiMenu);
mBar.add(optMenu);
mBar.add(aboutMenu);
setJMenuBar(mBar);
/********** Einstellungen für das Frame selbst ******/
setSize(700, 600);
setLocation(200,150);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /* sollte man so machen */
}
public void actionPerformed(ActionEvent event)
{
String cmd = event.getActionCommand();
if (cmd.equals("Exit"))
System.exit(0);
/* AboutBox wird gerufen */
if(cmd.equals("About"))
{
AboutBox aboutDlg = new AboutBox(this);
aboutDlg.show();
}
}
public void paint(Graphics g)
{
g.drawRect(20,20,500,500);
}
/* main */
public static void main(String[] args)
{
MainFrame frame1 = new MainFrame();
frame1.show();
frame1.repaint();
}
}
Fragende Grüße
Torsten
Lesezeichen