Unbekannter Fehler



  • hi,
    ich bin derzeit noch bei mich in Java einzuarbeiten und bekomme mal wieder die Fehlermeldung von Eclipse:

    "Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    No enclosing instance of type Bilderbuch is accessible. Must qualify the allocation with an enclosing instance of type Bilderbuch (e.g. x.new A() where x is an instance of Bilderbuch).

    at Bilderbuch.main(Bilderbuch.java:39)"

    Was heiß das genau und wie kann ich das Problem beheben? Danke für eure Hilfe.

    import javax.imageio.ImageIO;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.AffineTransform;
    import java.awt.geom.PathIterator;
    import java.awt.geom.Point2D;
    import java.awt.geom.Rectangle2D;
    import java.awt.image.BufferedImage;
    import java.awt.image.BufferedImageOp;
    import java.io.File;
    import java.net.URL;
    
    public class Bilderbuch extends JPanel{
    	private static final long serialVersionUID = 1L;
    
    	public static void main(String[] args){
    		JFrame frame = new JFrame("Test");
    		frame.setVisible(true);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setSize(800, 600);
    		JPanel panel = new JPanel();
    		frame.add(panel);
    		JButton button = new JButton("Click here");
    		panel.add(button);
    		button.addActionListener(new Action());
    
    		//---- new code
    		JPanel picpanel = new JPanel();
    		JScrollPane sc = new JScrollPane();
    		panel.add(sc);
    		sc.setVisible(true);
    		sc.setViewportView(picpanel);
    		picpanel.setVisible(true);
    		picpanel.setSize(100, 100);
    		newclass n;
    
    		try{
    			n = new newclass();  // <------- Fehlermeldung
    			n.repaint();
    		}catch(Exception e){
    			n = null;			
    		}
    		//picpanel.add(p);
    	}
    
    	public class newclass extends JPanel{
    		private static final long serialVersionUID = 1L;
    		private BufferedImage i;
    
    		public newclass(){
    			try{
    				i = ImageIO.read( new File("C:/kopie server/Schule/Studium/Semester 5/pic/roentgenbild.jpg" ) );
    			}catch(Exception e){ i = null; }
    		}
    
    		@Override protected void paintComponent( Graphics g ) 
    		{ 
    			Graphics2D g2d = (Graphics2D) g;
    			g2d.drawImage(i, null, 2500, 2500); 
    		}
    	}	
    	static class Action implements ActionListener{
    		public void actionPerformed (ActionEvent e){
    			JFrame frame2 = new JFrame("Clicked");
    			frame2.setVisible(true);
    			frame2.setSize(200, 200);
    			JLabel label = new JLabel("You clicked me!");
    			JPanel panel = new JPanel();
    			frame2.add(panel);
    			panel.add(label);
    
    		}
    	}	
    }
    


  • Es steht eigentlich im Fehler genau drin:

    fluffy17 schrieb:

    (e.g. x.new A() where x is an instance of Bilderbuch).

    "newclass" ist eine inner class, weil du sie innerhalb einer anderen Klasse geschrieben hast ( http://java.sun.com/docs/books/tutorial/java/javaOO/innerclasses.html ). Also muss es "n = this.new newclass();" heißen.



  • super 😃 vielen vielen Dank


Anmelden zum Antworten