Rysowanie prostokąta na Panelu

0

Cześć,

dzisiaj po raz pierwszy próbowałem narysować cokolwiek w Javie. Pogooglowałem trochę i znalazłem całkiem sporo, głównie o przepisaniu metody paintComponent() klasy JPanel. Jednak za żadne skarby nie chce mi nic wyświetlić na formie żadnym ze sposobów i nie mogę zrozumieć dlaczego. Czy mógłby ktoś spojrzeć w ten kod?

import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
import javax.swing.*;

class MyPanel extends JPanel {
	public void paintComponent( Graphics g ) {
		super.paintComponent( g );
		g.setColor( Color.yellow );
		g.fillRect( 10, 10, 100, 100);
	}
}

public class gui extends JFrame {
	gui( String title ) {
		super( title );
		setLayout( null );
		setBounds( 100, 100, 1000, 600 );
		
		MyPanel p = new MyPanel();
		add( p );
		
		setVisible( true );
	}

	public static void main( String args[] ) {
		gui okno = new gui( "asd" );
		okno.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	}
}

Pozdrawiam i dziękuję za pomoc.

0

Powinienś dodać
gui.setVisible(true);

W funkcji main.

0

nie rozumiem po co? (pomijając, że jest błąd?)

nie chodzi mi o to, że nie widze okna aplikacji tylko tego co rysuje na Panelu

0

Panel MyPanel nie ma rozmiaru.

import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
import javax.swing.*;

class MyPanel extends JPanel {
        MyPanel()
        {
            setPreferredSize(new Dimension(800,300));
        }
        public void paintComponent( Graphics g ) {
                super.paintComponent( g );
                g.setColor( Color.yellow );
                g.fillRect( 10, 10, 100, 100);
        }
}

public class gui extends JFrame {
        gui( String title ) {
                super( title );
                //setLayout( null );
                //setBounds( 100, 100, 1000, 600 );

                MyPanel p = new MyPanel();
                add( p );
                pack();

                setVisible( true );
        }

        public static void main( String args[] ) {
                gui okno = new gui( "asd" );
                okno.setVisible(true);
                okno.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
                okno.setLocationRelativeTo(null);
        }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1