samedi 30 mai 2015

Paint-Methode in anderer Klasse funktioniert nicht

Hallo Leute,
ich weiß echt nicht weiter. Ich habe eine Klasse mit dem Namen Hauptfenster. In ihr wird ein JFrame mit einer Menubar erstellt.
Über diese Menubar wird, wenn man auf "Neu" klickt, das Objekt grafische_Oberflaeche der Klasse Grafische_Oberflaeche erzeugt.
Damit will ich ein JPanel erzeugen um auf diesem später verschiedene grafische Elemente darzustellen. Zunächst soll jedoch nur ein rotes Rechteck abgebildet werden, um zu testen ob alles klappt. Doch es klappt nicht...
Das JPanel wird wie geplant erstellt, dass sehe ich daran, dass sich die Hintergrundfarbe ändert, wenn ich .setBackground verwende.
Aber irgendwas stimmt mit der paint-Methode nicht. Das Rechteck erscheint einfach nicht.
Sie müsste eigentlich richtig geschrieben sein, weil wenn ich sie in meine Hauptfenster-Klasse einfüge,
wird das rote Rechteck problemlos gezeichnet. Könnte es vielleicht daran liegen, dass ich die paint_Methode nicht in der Hauptklasse stehen habe? Sonst fällt mir nichts ein.

Wäre nett, wenn sich das mal jemand anschauen könnte und vielen Dank im Voraus.

Mein Code:
Java Code:

  1. package Main;
  2.  
  3. import TileMap.Grafische_Oberflaeche;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import javax.swing.JFrame;
  7. import javax.swing.JLabel;
  8. import javax.swing.JMenu;
  9. import javax.swing.JMenuBar;
  10. import javax.swing.JMenuItem;
  11. import javax.swing.JPanel;
  12. import javax.swing.WindowConstants;
  13.  
  14.  
  15.  
  16.  
  17. public class Hauptfenster extends javax.swing.JApplet {
  18.  
  19.  
  20. private static final long serialVersionUID = 1L;
  21. private JMenuBar jTop_Menu;
  22. private JMenu jMenu1;
  23. private JMenuItem jNeu_item;
  24. protected static JFrame j_frame;
  25. public static JLabel cursorHF;
  26. public static JPanel grafische_Oberflaeche;
  27. public static JFrame hauptfenster;
  28. public static Hauptfenster komponenten;
  29.  
  30.  
  31. public static void main(String[] args) {
  32.  
  33. hauptfenster = new JFrame();
  34. komponenten = new Hauptfenster();
  35.  
  36.  
  37. hauptfenster.getContentPane().add(komponenten);
  38. hauptfenster.pack();
  39.  
  40. hauptfenster.setExtendedState(JFrame.MAXIMIZED_BOTH);
  41. hauptfenster.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  42. hauptfenster.setVisible(true);
  43. }
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50. public Hauptfenster() {
  51.  
  52. getContentPane().setLayout(null);
  53.  
  54. {
  55. cursorHF = new JLabel();
  56. getContentPane().add(cursorHF);
  57. cursorHF.setLocation(1,1);
  58. cursorHF.setVisible(false);
  59. cursorHF.setSize(10,10);
  60. }
  61. {
  62. jTop_Menu = new JMenuBar();
  63. setJMenuBar(jTop_Menu);
  64. {
  65. jMenu1 = new JMenu();
  66. jTop_Menu.add(jMenu1);
  67. jMenu1.setText("Datei");
  68. {
  69. jNeu_item = new JMenuItem();
  70. jMenu1.add(jNeu_item);
  71. jNeu_item.setText("Neu");
  72. jNeu_item.addActionListener(new ActionListener() {
  73. public void actionPerformed(ActionEvent evt) {
  74. jNeu_itemActionPerformed(evt);
  75. }
  76. });
  77. }
  78. }
  79. }
  80. }
  81.  
  82.  
  83.  
  84. private void jNeu_itemActionPerformed(ActionEvent evt) {
  85.  
  86. Grafische_Oberflaeche grafische_Oberflaeche = new Grafische_Oberflaeche();
  87.  
  88. }
  89. }


Java Code:

  1. package TileMap;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Graphics;
  5. import javax.swing.JPanel;
  6. import Engine.Hauptfenster;
  7. import Neu.Hauptfenster_Neu_3;
  8.  
  9.  
  10. public class Grafische_Oberflaeche extends JPanel{
  11.  
  12. private static final long serialVersionUID = 1L;
  13. JPanel panel;
  14.  
  15.  
  16. public Grafische_Oberflaeche(){
  17. panel = new JPanel();
  18. Hauptfenster.komponenten.add(panel);
  19. panel.setBounds(1, 2, Hauptfenster.hauptfenster.getWidth(), Hauptfenster.hauptfenster.getHeight());
  20. panel.setBackground(Color.yellow);
  21. panel.setLayout(null);
  22. panel.setVisible(true);
  23. }
  24. @Override
  25. public void paint(Graphics g){
  26. super.paint(g);
  27. g.setColor(Color.red);
  28. g.fillRect(1, 1, 500, 500);
  29. }
  30.  
  31. }



Hab noch vergessen zu erwähnen, dass keine Fehlermeldung angezeigt wird


Paint-Methode in anderer Klasse funktioniert nicht

0 commentaires:

Enregistrer un commentaire