sry Hintergundbild verzweifele seit 6 std daran

Status
Nicht offen für weitere Antworten.

Roderick

Neues Mitglied
hab nun einige seiten durchsucht und immer wieder das selbe gefunden .. nur bei mir funzt es einfach nicht ;/

Code:
public class Startframe {
	public static void main(String[] args) {
	      JFrame   f = new   JFrame  ( "Dark Enwor" );
	      f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	      f.setSize( 400, 450 );
	      f.setVisible( true );
	      f.setResizable( false );
	      Dimension d= Toolkit.getDefaultToolkit().  getScreenSize()  ;
	      f.setLocation( (d.width - f.getSize().width ) / 2,(d.height - f.getSize().height) / 2);
	      
	      
	      Container hintergrund = f.getContentPane();
	      hintergrund.setLayout ( new FlowLayout() );
	      Color bc = new Color (0, 0, 0);
	      hintergrund.setBackground (bc);
	      
	      Container inhalt = f.getContentPane();
	      inhalt.setLayout(new BorderLayout());

	      ImageIcon loginicon = new ImageIcon ("gfx/login.jpg");
	      ImageIcon registicon = new ImageIcon ("gfx/registrieren.jpg");
	      ImageIcon websiteicon = new ImageIcon ("gfx/website.jpg");
	      ImageIcon beendenicon = new ImageIcon ("gfx/beenden.jpg");
	      	          
	      JButton b1 = new JButton( "login", loginicon);
		  f.add( b1 );
		  b1.setSize( 180, 20 );
		  b1.setLocation ( (f.getSize().width - b1.getSize().width) /2, 250 );

	      JButton b2 = new JButton( "regist", registicon);
		  f.add( b2 );
		  b2.setSize( 180, 20 );
		  b2.setLocation ( (f.getSize().width - b2.getSize().width) /2, 270 );
		  
	      JButton b3 = new JButton( "website", websiteicon);
		  f.add( b3 );
		  b3.setSize( 180, 20 );
		  b3.setLocation ( (f.getSize().width - b3.getSize().width) /2, 290 );
		  
	      JButton b4 = new JButton( "beenden", beendenicon);
		  f.add( b4 );
		  b4.setSize( 180, 20 );
		  b4.setLocation ( (f.getSize().width - b4.getSize().width) /2, 310 );
		    ActionListener ab4 = new ActionListener() {
			      public void actionPerformed( ActionEvent e ) {
			        System.exit( 0 );
			      }
			 };
			    b4.addActionListener( ab4 );
			    b4.setVisible( true );	  

	}
  	public void paintComponent( final Graphics g )
	{
		Image startbild = Toolkit.getDefaultToolkit().getImage( "gfx/start.jpg" );
		g.drawImage( startbild, 0, 0, null );
	} 
}

habs auch schon über 2 Dateien probiert aber auch das nimmt er nicht.. ich verzweifele hier nun wirklich langsam daran....

wie rufe ich nun in der Main die Grafik auf das sie angezeigt wird ohne einen nonstatic fehler?
 

André Uhres

Top Contributor
Roderick hat gesagt.:
..wie rufe ich nun in der Main die Grafik auf das sie angezeigt wird ohne einen nonstatic fehler?
Ein "nonstatic" Fehler lässt sich leicht vermeiden, indem man static-Methoden vermeidet.
Die main ist natürlich immer static, deshalb wird dort einfach nur die Klasse erzeugt,
und schon ist die Sache geritzt.
Die paintComponent macht nur Sinn in einer JComponent, meistens ein JPanel.
Den Frame machst du am besten erst sichtbar wenn alle Komponenten drin sind, sonst kann es passieren,
daß nicht alles gezeichnet wird (es sei denn du machst noch ein zusätzliches f.validate()).
Code:
public class Startframe {
    public Startframe(){
        JFrame f = new JFrame( "Dark Enwor" );
        f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        f.setSize( 400, 450 );
        //<------------------------------------ f.setVisible(true) hier wegnehmen !
        f.setResizable( false );
...
        b4.addActionListener( ab4 );
        b4.setVisible( true );
        BildPanel bild = new BildPanel();
        f.add(bild);
        f.setVisible( true );
    }
    public static void main(String[] args) {
        new Startframe();
    }
    class BildPanel extends JPanel{
        private Image startbild;
        public BildPanel(){
            super();
            startbild = new ImageIcon("gfx/start.jpg" ).getImage();
            setBounds(0,0,startbild.getWidth(null), startbild.getHeight(null));
        }
        public void paintComponent( final Graphics g ) {
            super.paintComponent(g);
            g.drawImage( startbild, 0, 0, null );
        }
    }
}
 

Roderick

Neues Mitglied
DANKE DANKE DANKE


endlich mal so das man es versteht und es auch geht. irgendwie kam ich mit den anderen erklärungen auf allen anderen seiten nie klar .. echt spitze DANKE nochmal


Gruß Roderick
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben