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
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