Ergebnis 1 bis 4 von 4

Thema: Java - Fenster wird nicht richtig gezeichnet

  1. #1

    Java - Fenster wird nicht richtig gezeichnet

    Hallo!

    Ich habe/bin dabei in Java ein Quizprogramm zuschreiben, mit dem man sowohl ein Quiz erstellen, als auch natürlcih spielen kann.
    Und natürlich hat es noch eine Menge an (nutzlosen) Benutzerfunktionen.
    Unter Win7, Java 7 wird auch alles richitg angezeigt, jedoch unter Win Vista, Win Xp, und mac gibt es folgendes Darstellungsproblem:

    Klicke auf die Grafik für eine größere Ansicht 

Name:	QuizBugHerb.PNG 
Hits:	62 
Größe:	243,8 KB 
ID:	13011

    Hieran sieht man das ein Teil des Programmes nicht gezeignet wird und auch die Menüleiste wird erst angezeigt wenn ich mit der Maus drüber fahre.
    Wenn ich das Programm ganz klein ziehe und dann wieder größer wird alle koreckt angezeigt (oder eben ein Quiz gestartet wird).

    Ich würde hier ungern meien ganzen Programmcode zeigen, wenn aber jemand eine Idee hat wo der Fehler liegen könnte, dann stelle ich ihn natürlich zur Verfügung.
    Jedoch befürchte ich, dass einfach ein Fehler im Java ist, oder irre ich mich da?
    Würde mich über viele Antworten freuen!

    Euer Herb

  2. #2
    Welche Grafikbibliothek verwendest du überhaupt? Swing? SWT? oder benutzt du sogar JOGL (OpenGL)?
    Zumindest der Code fürs Zeichnen wäre schon nicht schlecht.
    Es sieht so aus, als würde die Neuzeichnung nicht angestoßen.

  3. #3
    Hey!

    Also, das Hintergrundbild wird ja nicht richtig gezeichnet.
    Dafür Überschreibe ich erst die ContentPane
    Code:
     private class ContentPane extends JPanel{
    
        	public ContentPane(){
        		setLayout(new FlowLayout());
        	}
        	public void paintComponent(Graphics g){
        		super.paintComponents(g);
        		Graphics2D g2 = (Graphics2D)g;
        		if(pic != null)
        		g2.drawImage(pic,0,0,this.getWidth(),this.getHeight(),this);	
        	}}
    und rufe sie später über
    setContentPane(new ContentPane());
    wieder auf.

    Während ich gerade das heir schreibe hatte ich eine Idee und habe sie in die Tat umgesetzt und es hat funktiniert. Noch ein kleiner Anfängerfehler
    Falls jemand ein ähnliches Problem hatte bei mir lag es daran, dass ich das setContentPane(new ContentPane()); setzten musste, erst nachdem ich eben diese mit Inhalt, sprich über getContentPane().add(mainPanel,BorderLayout.NORTH); gefüllt habe.

    Trozdem danke Whiz, das du dich so schnell gemeldet hast.

  4. #4
    Es ist nicht unbedingt nötig, dass du bei einem JPanel die paintComponent bzw. paint-Methode überschreibst, um Bilder zu zeichnen.

    Es reicht meistens aus, wenn du "kein" Layout (swing nutzt afaik standardmäßig das FlowLayout, gemeint ist also null) benutzt.
    Das kannst du wie folgt machen:
    1. Setze das Layout des JPanel auf null, statt auf "new FlowLayout".
    2. Komponenten (JLabel, JButton usw.) initialisieren und mit der Methode setBounds(int x,int y, int width, int height) der Komponente die genaue Position und Ausmaße festlegen.
    3. Komponenten nach der Zeichenreihenfolge (erstes ganz unten, letztes ganz oben) dem JPanel per add(Component component) hinzufügen.


    PS: Ein Bild gezeichnet kriegt man am besten über JLabel hin, dass du wie folgt initialisierst:
    Code:
    new JLabel(new ImageIcon(String\Image\byte[]\URL image));

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •