Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Application mit Menu und Canvas



BlueJay
25-09-2007, 11:48
Hallo Leute,

folgendes Problem:

ich möchte eine Application mit Menu und Canvas für paint erstellen.
Leider wird das Menu nicht mehr korrekt angezeigt, sobald ich den Content mit dem Canvas einhänge. (kein Dropdown, nur Headers sichtbar)

Verkleinere ich den Canvas, so dass dessen Höhe die Höhe des Menus unterschreitet, ist das Menu voll sichtbar.

Zeige ich statt des Canvasses ein Textfeld an, funktioniert das Menu tadellos.

Code:



public Container mach_textbox()
{
JTextPane panne = new JTextPane();
panne.setOpaque(true);
panne.setSize(this.sxmax,this.symax);
panne.setText("Platzhalter fuer andere Texte");
return panne;
}

public Container mach_spielfeld()
{
JPanel panne = new JPanel();
panne.setSize(this.sxmax,this.symax);
panne.add(this); // Canvas!
return panne;
}

public JMenuBar mach_menubar()
{
JMenuBar menu=new JMenuBar();
// Dropdown Menus Headers:
JMenu menu0=new JMenu("Spiel");
menu0.setMnemonic(KeyEvent.VK_0);
menu0.getAccessibleContext().setAccessibleDescript ion("Steuerung Spiel");
menu.add(menu0);

// Dropdown Menu 0:
JMenuItem menu00 = new JMenuItem("Neu",KeyEvent.VK_N);
menu00.getAccessibleContext().setAccessibleDescrip tion( "startet ein neues Spiel");
menu0.add(menu00);

JMenuItem menu01 = new JMenuItem("Pause",KeyEvent.VK_P);
menu01.getAccessibleContext().setAccessibleDescrip tion( "Pause/weiter");
menu0.add(menu01);

...

return menu;
}






public static void main(String[] args)
{
colorix game=new colorix();
game.init_data();
JFrame f=new JFrame("C o l o r i x");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cp=f.getContentPane();
cp.setLayout(new BorderLayout());
cp.add(game.mach_menubar(),BorderLayout.NORTH);
// cp.add(game.mach_textbox(),BorderLayout.CENTER); // funktioniert
// cp.add(game.mach_spielfeld(),BorderLayout.CENTER); // entweder kein Dropdown oder kein Spielfeld je nach Compilerlaune
cp.add(game); // Canvas, kein Dropdown
f.setSize(640,480);
f.setVisible(true);
}


Java: 1.6
Eine Entwicklungsumgebung benutze ich nicht.

Habe ich da irgendwo was vergessen?

so long,
BlueJay

Zur Illustration:
mit Textfeld:
http://www.gamecraft.de/_sonstiges/mit_textfeld.jpg


mit Canvas:
http://www.gamecraft.de/_sonstiges/normaler_canvas.jpg

verkleinerter Canvas:
http://www.gamecraft.de/_sonstiges/verkleinerter_canvas.jpg

BlueJay
25-09-2007, 12:49
derzeitiger Würgaround:

Canvas -> JPanel
paint ->paintComponent

awt und swing scheinen sich wohl nicht zu vertragen...