Another question: non-static variable super cannot be referenced from ...?

class a
int i;     
int j=2;
a(int i)
this.i=i;
public class b extends a
     b()
     super(8);     
public static void main(String args[])
b test=new b();
System.out.print(test.i);
test.j=1;
System.out.print("test.j="+test.j);
System.out.print("super.j="+super.j);
b.java:28: non-static variable super cannot be referenced from a static context
System.out.print("super.j="+super.j);
^
1 error
thanks

You cannot call "super" from a static context. Just like you can't use "this" or call any non-static methods in a static context.
Try with test.super.j, although I'm not sure if it works. But you can call super.j in a non-static context, e.g. in your constructor, or in a non-static method.

Similar Messages

  • Non-static variable aceYears cannot be referenced from a static context

    This is my error...
    investment.java:53: non-static variable aceYears cannot be referenced from a static context
    lwInvest.numberAceYears(aceYears);
    ^
    This is my code...
    public static void main (String[] args)
    investment.Invest.numberAceYears(aceYears);
    and more code
    String termInvested = JOptionPane.showInputDialog
    ("Please enter the amount of years to invest your investment.");
    int intTermInvested = Integer.parseInt(termInvested);
    and yet more code..
    public void numberAceYears (int aceYears)
    for (int aY = 5 ; aY <= aceYears; aY++)
    double aceInterest = aceCoBalance * aceCoRate /100;
    aceCoBalance = aceCoBalance + aceInterest;
    aceYears = aceYears + aY;
    Suggestions?

    Short version: Either make the variable in question static, or create an instance of your class and use that to access it. Either one will work, but one probably suits your design better. It's up to you to figure out which one.
    For details, see the relevant section of your favorite Java book or tutorial, or poke around here:
    http://www.google.com/search?q=java+non+static+variable+cannot+be+referenced+from+a+static+context

  • Non-static variable total cannot be referenced from a static context

    i am trying to write a program that uses the if-else statements and when i wrote my program i got "non-static variable total cannot be referenced from a static context" for three lines of my input.
    A:\Disks.java:20: non-static variable total cannot be referenced from a static context total = (10000 * .95 + ((diskCount - 10000) * .85));
    ^
    A:\Disks.java:22: non-static variable total cannot be referenced from a static context total = (diskCount * .95);
    ^
    A:\Disks.java:24: non-static variable total cannot be referenced from a static context System.out.print(total);
    ^
    Do you know what I did wrong?

    I apologise in advance for the general tone of this reply.....
    Ummm, let me think for a second... You referenced a non static
    variable from a static context. Yup, yup. That's it !
    If you can't figure this out, you really need to do a Java tutorial or
    buy a text book. Basically though, total is a member of some class
    and you are trying to use it from a static function. I bet you have
    something like:
    public class Test {
        public int total;
        // blah blah blah
        public static void main(String[] args) {
            // This won't work cos "total" is a member and we are static
            System.out.println(total);
            // This works cos now you have an instance to pull total
            // out of.
            Test t = new Total();
            System.out.println(t.total);
    }

  • Non-static variable change cannot be referenced from a static context

    My compiler says: : non-static variable change cannot be referenced from a static context
    when i try to compile this. Why is it happening?
    public class change{
      int coin[] = {1,5,10,25,50};
      int change=0;
      public static void main(){
        int val = Integer.parseInt(JOptionPane.showInputDialog(null, "Type the amount: ", "Change", JOptionPane.QUESTION_MESSAGE));
        change = backtrack();
    }

    A static field or method is not associated with any instance of the class; rather it's associated with the class itself.
    When you declared the field to be non-static (by not including the "static" keyword; non-static methods and fields are much more common so it's the default), that meant that the field was a property of an object. But the static main method, being static, didn't have an object associated with it. So there was no "change" property to refer to.
    An alternative way to get this work, would be to make your main method instantiate an object of the class "change", and put the functionality in other instance methods.
    By the way, class names are supposed to start with upper-case letters. That's the convention.

  • Non-static variable this cannot be referenced from a static context

    public static File saveFile()
         JFileChooser saving = new JFileChooser();
         saving.setSelectedFile(new File(""));
         int returnVal = saving.showSaveDialog(AccountTest.this);
         if(returnVal == JFileChooser.APPROVE_OPTION)
              File file = saving.getSelectedFile();
              saveAccount(file.getParent() + "\\" + file.getName() + ".bpa");
              System.out.println(file.getParent()+ "\\" + file.getName() + ".bpa");
         return null;
    }after compiling my program, it complains that the line int returnVal = saving.showSaveDialog(AccountTest.this); is giving me the problem. what am i doing wrong? any help is appreciated. thank you in advance
    hristo

    Hristo wrote:
    what does that mean?You apparently wrote this line of codeint returnVal = saving.showSaveDialog(AccountTest.this);What did you intend the line to do? What did you intend AccountTest.this to represent?
    As the previous post stated, your method is static so you can not use 'this' inside the method.
    I am guessing, but perhaps you will get desired results if you just put 'null' in place of 'this'

  • Help me please~ non-static variable rs cannot be referenced ...

    i make counter
    but this error occurrence
    only i doing resultset make and closed
    why non-static variable rs ....
    i am sorry i don't speak English ...
    help me please..
    error message
    non-static variable rs cannot be referenced from a static context
    source
    ===============================================
    package jjaekim;
    import java.sql.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class Count{
              Statement stmt;
              ResultSet rs;
              ResultSet rs2;
              Connection conn;
              //DBPoolManager dbpm;
         public static String add(HttpServletRequest request){
              try{
                        int year =0;
                        int month=0;
                        int date =0;
                        int hour =0;
                        int min     =0;
                        int week =0;
                        String str_date=new String();
                        String str_time=new String();
                        String referer_url     =request.getHeader("Referer");
                        String infomation     =request.getHeader("User-Agent");
                        String ip               =request.getRemoteAddr();
                        int access_date=0;
                        int access_time=0;
                        Calendar cal     =Calendar.getInstance();
                        year               =cal.get(cal.YEAR);
                        month               =cal.get(cal.MONTH) + 1;
                        date               =cal.get(cal.DATE);
                        hour               =cal.get(cal.HOUR_OF_DAY);
                        min                    =cal.get(cal.MINUTE);
                        week               =cal.get(cal.DAY_OF_WEEK);
                        access_date          =(month*100)+date;
                        access_time          =(hour*100)+min;
                        if(access_date<1000)
                             str_date="0"+new Integer(access_date).toString();
                        else
                             str_date=new Integer(access_date).toString();
                        if(access_time<100)
                             str_time="0"+new Integer(access_time).toString();
                        else
                             str_time="0"+new Integer(access_time).toString();
                   }catch(Exception e){
                        //System.out.print("Exc"+e.getMessage());
                        //return false;
                   finally{
                             if(rs!=null){
                                  try{     rs.close();}catch(Exception e){}
                             if(rs2!=null){
                                  try{     rs2.close();}catch(Exception e){}
                             if (stmt!=null){
                                  try{     stmt.close();}catch(Exception e){}
                             //if (conn!=null){
                                  try{     conn.close(); }catch(Exception e){}
                        //return back;
    /*     public static void main(String[] args)
              System.out.println("Hello World!");

    Hello jjaekim,
    if rs is a class variable (the same value for all objects),
    try this (more likely to be the right solution) :
    static ResultSet rs;
    instead of :
    ResultSet rs;
    if rs has a different values in different objects,
    then you should add the object name when using it like this :
    myObject.rs or this.rs

  • Non-static method close() cannot be referenced from a static context

    Friends,
    I am having a little help with some static and not static issues.
    I created a JMenuBar, it's in the file: SlideViewMenu.java
    One of the operations is File->Close and another is File->Exit.
    The listener is in the SlideViewMenu.java file. The listener needs to reference two non-static methods within SlideView.java.
    Here's some of the code:
    SlideViewMenu.java
    public class SlideViewMenu {
        public JMenuBar createMenuBar() {
        final Action openAction = new OpenAction();
        Action aboutAction = new AboutAction();
        ActionListener menuListener = new MenuActionListener();
        JMenuBar menuBar = new JMenuBar();
         // All the menu stuff works fine and is taken care of here.
       // Listener for Menu
       class MenuActionListener implements ActionListener {
         public void actionPerformed (ActionEvent actionEvent) {
              String selection = (String)actionEvent.getActionCommand();
             if (selection.equals("Close"))
              SlideViewFrame.close();
             else  SlideViewFrame.exit();
    }SlideView.java
    // Driver class
    public class SlideView {
         public static void main(String[] args) {
              ExitableJFrame f = new SlideViewFrame("SlideView");
                    // Stuff here, works fine.
    // Frame class
    class SlideViewFrame extends ExitableJFrame {
            // some things here, work fine.
         private SlideViewMenu menuBar = new SlideViewMenu();
         public SlideViewFrame(String title) {
         // Set title, layout, and background color
         super(title);
         setJMenuBar(menuBar.createMenuBar());
            // Stuff here works fine.
         // Handles doing stuff once the file has been selected
         public void setFileName(File fullFileName, String simpleName) {
            // Stuff here works fine.     
         // File->Close. clean up everything.
         public void close() {
              setTitle("SlideView");
              textArea.setText("");
              scrollBar.setVisible(false);
              textArea.setVisible(false);
              statsPanel.setVisible(false);
         // File->Exit.     
         public void exit() {
              System.exit(0);
    }The error I'm getting is:
    SlideViewMenu.java:50: non-static method close() cannot be referenced from a static context
    I don't get it?
    Thanks for all help.

    Making close() and exit() static would not solve the problem because close() requires access to nonstatic member variables/functions.
    Fortunately, that is not necessary. The real reason you are having a problem is that you don't have any way in your listener to access the main frame window, which is what the listener trying to control. You made a stab at gaining access by prefixing the function with the class name, but, as the compiler has informed you, that is only valid for static methods. If you think about it, you should see the sense in that, because, what if you had a number of frames and you executed className.close()? Which one would you close? All of them?
    Fortunately, there is an easy way out that ties the listener to the frame.
    SlideViewMenu.java:public class SlideViewMenu
      // Here's where we keep the link to the parent.
      private SlideViewFrame parentFrame;
      // Here's where we link to the parent.
      public JMenuBar createMenuBar(SlideViewFrame linkParentFrame)
        parentFrame = linkParentFrame;
        final Action openAction = new OpenAction();
        Action aboutAction = new AboutAction();
        ActionListener menuListener = new MenuActionListener();
        JMenuBar menuBar = new JMenuBar();
        // All the menu stuff works fine and is taken care of here.
      // Listener for Menu --- It is assumed that this is a non-static nested
      // class in SlideViewMenu. All SlideViewMenu variables are accessible from
      // here. If this is not the case, simply add a similar member variable
      //  to this class, initialize it with a constructor parameter, and
      // pass the SlideViewMenu parentFrame when the listener is
      // constructed.
      class MenuActionListener implements ActionListener
        public void actionPerformed (ActionEvent actionEvent)
          String selection = (String)actionEvent.getActionCommand();
          // Use parentFrame instead of class name.
          if (selection.equals("Close"))
              parentFrame.close();
            else
              parentFrame.exit();
    }SlideView.java// Driver class
    public class SlideView
      public static void main(String[] args)
        ExitableJFrame f = new SlideViewFrame("SlideView");
        // Stuff here, works fine.
    // Frame class
    class SlideViewFrame extends ExitableJFrame
      // some things here, work fine.
      private SlideViewMenu menuBar = new SlideViewMenu();
      public SlideViewFrame(String title)
        // Set title, layout, and background color
        super(title);
        //Here's where we set up the link.
        setJMenuBar(menuBar.createMenuBar(this));
      // Stuff here works fine.
      // Handles doing stuff once the file has been selected
      public void setFileName(File fullFileName, String simpleName)
        // Stuff here works fine.     
      // File->Close. clean up everything.
      public void close()
        setTitle("SlideView");
        textArea.setText("");
        scrollBar.setVisible(false);
        textArea.setVisible(false);
        statsPanel.setVisible(false);
      // File->Exit.
      public void exit()
        System.exit(0);
    }

  • Non-static method getIDnumber() cannot be referenced from a static context

    Student.java
    public class Student
         private int IDnumber;
         private int hours;
         private int points;
         public Student()
       IDnumber = 9999;
       points = 12;
       hours = 3;
         public void setIDnumber(int number)
         IDnumber = number;
       public int getIDnumber()
         return IDnumber;
       public void setHours(int number)
       hours = number;
       public int getHours()
       return hours;
       public void setPoints(int number)
       points = number;
       public int getPoints()
       return points;
         public void showIDnumber()
       System.out.println("ID Number is " + IDnumber);
       public void showHours()
       System.out.println("Credit Hours are " + hours);
       public void showPoints()
       System.out.println("Points Earned are " + points);
       public double getGradePoint()
       return (double) (points / hours);
    ShowStudent.java
    public class ShowStudent
         public static void main(String[] args)
              Student learner = new Student();
              int IDnumber;
              int points;
              int hours;
              IDnumber = Student.getIDnumber();
              points = Student.getPoints();
              hours = Student.getHours();
              System.out.println("ID number is " + IDnumber);
              System.out.println("Hours are " + hours);
              System.out.println("Points are " + points);
    Here I get the following.  How do I fix this?  Thanks.
    ShowStudent.java:9: non-static method getIDnumber() cannot be referenced from a
    static context
    IDnumber = Student.getIDnumber();
    ^
    ShowStudent.java:10: non-static method getPoints() cannot be referenced from a
    static context
    points = Student.getPoints();
    ^
    ShowStudent.java:11: non-static method getHours() cannot be referenced from a s
    tatic context
    hours = Student.getHours();
    ^
    3 errors

    You have to get the ID number of a particular instance i.e. IDnumber = learner.getIDnumber();

  • Non-static method getPerimeter() cannot be referenced from a static context

    I am getting this error message. I assume it is because getArea( ) and getPerimeter( ) are nonstatic and main is static? Can somebody help me? Thanks in advance!
    Error messages:
    non-static method getArea() cannot be referenced from a static context
              System.out.println("\nArea: " + onePlace.format(getArea()));
    non-static method getPerimeter() cannot be referenced from a static context
              System.out.println("Perimeter: " + onePlace.format(getPerimeter()));
    import java.util.Scanner;
    import java.text.DecimalFormat;
    public class Rectangle
         public double length;
         public double width;
         public Rectangle()
              length = 0;
              width = 0;
         public double getLength()
              return length;
         public double getWidth()
              return width;
         public void setLength(double length)
              this.length = length;
         public void setWidth(double width)
              this.width = width;
         public double getArea()
              return (length * width);
    /*     public double area(Rectangle R)
              double area = length * width;
              return area;
         public double getPerimeter()
              return ((length * 2) + (width * 2));
    /*     public double perimeter(Rectangle R)
              double perimeter = (length * 2) + (width * 2);
              return perimeter;
    /*     public String toString()
              double area = 0;
              double perimeter = 0;
              return "Area: " + area + "\tPerimeter: " + perimeter;
         public static void main(String [] args)
              DecimalFormat onePlace = new DecimalFormat("#0.0");
              Rectangle R = new Rectangle();
              Rectangle L = new Rectangle();
              Rectangle W = new Rectangle();
              Scanner input = new Scanner(System.in);
              System.out.println("Enter length of rectangle: ");
              L.setLength(input.nextDouble());
              System.out.println("\nEnter width of rectangle: ");
              W.setWidth(input.nextDouble());
              System.out.println("\nArea: " + onePlace.format(getArea()));
              System.out.println("Perimeter: " + onePlace.format(getPerimeter()));
    //          System.out.println(R.toString());
    }

    For some reason, something isn't being read.
    This is what I get:
    Enter length of rectangle:
    2
    Enter width of rectangle:
    4
    Area: 0.0
    Perimeter: 0.0
    Press any key to continue . . .
    Is it what I have to scan the input (L.setLength...)?
         public static void main(String [] args)
              DecimalFormat onePlace = new DecimalFormat("#0.0");
              Rectangle R = new Rectangle();
              Rectangle L = new Rectangle();
              Rectangle W = new Rectangle();
              Scanner input = new Scanner(System.in);
              System.out.println("Enter length of rectangle: ");
              L.setLength(input.nextDouble());
              System.out.println("\nEnter width of rectangle: ");
              W.setWidth(input.nextDouble());
              System.out.println("\nArea: " + onePlace.format(R.getArea()));
              System.out.println("Perimeter: " + onePlace.format(R.getPerimeter()));
    //          System.out.println(R.toString());
    }

  • Non-static method getContentPane() cannot be referenced from a static conte

    From this line I'm getting an error
    Container bmC = getContentPane();
    - non-static method getContentPane() cannot be referenced from a static context
    Aprecciate solution,
    thx

    The reason this is happening is that you can't call non-static methods from a static method. Non-static methods need an instance in order to be called. Static methods are not associated with an instance.

  • "non-static ... cannot be referenced from a static..." BUT they're static!

    Well, this is starting to get a little frustrating.
    I compile and get "non-static method cannot be referenced from a static context", BUT I declared the method as static!!! Why am I still getting this!?!
    I'm calling the method from my main, as it is in another class. I've done this before and never ran into problems, but for some reason this time I am. Can anyone let me know what the problem could be and some possible solutions for fixing it.
    Thank you so much.

    A lot of people don't know this, but whenever you run javac or use a compiler in an IDE, it doesn't actually compile the code. It just packages it up and emails it to an email address at sun.com. There, a Sun developer reads your code and then turns it into bytecode by hand. It seems to go really fast, but that's because it's sent to to hundreds of offshore developers working in parallel. Then the lead developer emails your compiled class file back to javac, which then writes it to disk, unless the developer there had problems, in which case they email you back a list of error messages that javac displays to the screen.
    So what happened was, the first time you compiled it, the offshore developers didn't like you personally, so they sent you error messages. But the second time you tried to compile it, they had changed shifts, and the new developers did like you, so they compiled your code.
    Your code didn't change, you didn't invoke javac differently, and your code and your skills as a developer are all flawless. It's just a matter of whether the folks doing the compiliation like you.

  • Non-static method paint cannot be referenced from static context

    i cant seem to figure out this error dealing method paint:
    public class TemplateCanvas extends Canvas implements Runnable {
        //static
        public static final int STATE_IDLE      = 0;
        public static final int STATE_ACTIVE    = 1;
        public static final int STATE_DONE      = 2;
        private int     width;
        private int     height;
        private Font    font;
        private Command start;   
        private int state;
        private String message;
        public TemplateCanvas() {
            width = getWidth();
            height = getHeight();       
            font = Font.getDefaultFont();
            //// set up a command button to start network fetch
            start = new Command("Start", Command.SCREEN, 1);
            addCommand(start);
        public void paint(Graphics g) {
            g.setColor(0xffffff);
            g.fillRect(0, 0, width, height);
            g.setColor(0);
            g.setFont(font);
            if (state == STATE_ACTIVE) {
                Animation.paint(g);
            } else if (state == STATE_DONE) {
                g.drawString(message, width >> 1, height >> 1, Graphics.TOP | Graphics.HCENTER);
        public void commandAction(Command c, Displayable d) {
            if (c == start) {
                removeCommand(start);
                //// start fetching in a new thread
                Thread t = new Thread(this);
                t.start();
        public void run() {
            state = STATE_ACTIVE;
            //// start network fetch
            Network network = new Network();
            network.start();
            //// start busy animation
            Animation anim = new Animation(this);
            anim.start();
            //// wait for network to finish
            synchronized (network) {
                try {
                    wait();
                } catch (InterruptedException ie) { }
            //// end animation
            anim.end();
            //// get message from network
            message = network.getResult();
            //// repaint message
            state = STATE_DONE;
            repaint();
    }TemplateCanvas.java:38: non-static method paint(javax.microedition.lcdui.Graphics) cannot be referenced from a static context

    Animation.paint(g); paint() is not a static method. That means you have to call it on an instance of an Animation class (an object), not on the class itself. This is designed this way because the paint() method uses variables that have to be instantiated, so if you don't have an instance to use, it can't access the variables it needs. Static methods don't use instance variables, they only use what's passed in to them, so they don't need to be called on an object. Hope that was clear.

  • Non-static method getRealPath cannot be referenced from a static context

    Hi, I'm fairly new to java and servlets, I get the following error referencing the line denoted in the code snippet with a ">>" I don't understand why I am getting this error message?
    Message: non-static method getRealPath(java.lang.String) cannot be referenced from a static context
    public class events extends HttpServlet implements SingleThreadModel {
      private static final String CONTENT_TYPE = "text/html";
      //Initialize global variables
      public Document xmlDocument;
      public HttpSession theSession;
      public RequestDispatcher pageInit;
      public RequestDispatcher pageHeader;
      public RequestDispatcher pageFooter;
      public String path;
      public void setPath(){
    path = getServletContext.getRealPath( "/" );  }
      public void init() throws ServletException {
      }

    Ok More Code, I am weary of posting too much? I don't know why come to think of it?
    package altitude;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    import org.jdom.*;
    import altitude.sysVar;
    public class events extends HttpServlet implements SingleThreadModel {
      private static final String CONTENT_TYPE = "text/html";
      //Initialize global variables
      public Document xmlDocument;
      public HttpSession theSession;
      public RequestDispatcher pageInit;
      public RequestDispatcher pageHeader;
      public RequestDispatcher pageFooter;
      public String path;
      public void getRealPath(){
        path = ServletContext.getRealPath( "/" );
      public void init() throws ServletException {
      //Process the HTTP Get request
      public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
        //Initialise some Global Variables
        theSession = request.getSession( true );
        doPage( request, response );
      //Process the HTTP Post request
      public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
        //Initialise some Global Variables
        theSession = request.getSession( true );
        doPage( request, response );
    public void doPage( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
        //Initialise the variables and get the parameters from the query string.
        String eventID = request.getParameter( "eventID" );
        String dateFrom = request.getParameter( "dateFrom" );
        String dateTo = request.getParameter( "dateTo" );
        theSession.setAttribute( "Page Title", sysVar.servletTitle_events);
        Calendar theCalendar = Calendar.getInstance();
        RequestDispatcher pageInit = request.getRequestDispatcher( sysVar.servlet_initSession );
        pageInit.include( request, response );
        RequestDispatcher pageHeader = request.getRequestDispatcher( theSession.getAttribute( "Skin Directory" ) + sysVar.page_header );
        RequestDispatcher pageBody = request.getRequestDispatcher( sysVar.servletJsp_events );
        RequestDispatcher pageFooter = request.getRequestDispatcher( theSession.getAttribute( "Skin Directory" ) + sysVar.page_footer );
        //Initailize the site for this visitor this sets up the skin, and any customisations that may exist.
        //load variables, objects in to the session
        theSession.setAttribute( "Xml Document Object",  path + sysVar.data_events );
        pageHeader.include( request, response );
        pageBody.include( request, response );
        pageFooter.include( request, response );
        //remove the variables and the objects from the session
        theSession.setAttribute( "Xml Document Object", "" );
      //Clean up resources
      public void destroy() {
    }

  • Non-static method/object cannot be referenced from a static context...?????

    What does this mean. I know about static, but I don't understand why I get this so many times.
    I try to do something pretty normal and this is what I get a lot of times. I mean: the main() method should be static right? Then what good is the main() method if you cannot let it do stuff for you like this:
    public class Test extends JFrame
        public Test
            setSize( 100, 100 );
            show();
    public static main( String args[] )
        Test window = new Test();
        draw();
    public void draw()
        blablabla whatever I want to do, a lot of times I can't.....
    }Why is this, what is the reason for Java to forbid this and what can I do about it?

    Your draw() method, since it isn't defined as static is considered by Java to be part of your Test object; hence, it can only be invoked in the context of an existing instance of your object. In other words, any Java program that wanted to use your draw() method would have to create an instance of your Test class using something likemyTest = new Test()Your main method, however, is something different. Since you want to execute your class as a program, the Java run-time environment needs to have standard starting point. This starting point is the main method. The problem is that the main method must be static, because the run-time environment cannot be expected to know beforehand the correct way to create an instance of your class so that non-static methods can be invoked. The drawback is that your main method can only directly access methods that are defined as static.
    There are two possible solutions to this problem, and which of the two you want to use depends on the object-oriented nature of your program.
    On the one hand, if your draw() method is closely tied to the object itself, if the draw() method is actually drawing your object or a part of it, it should be left as an instance method, and you should simpy use the instance of the object you created in your main method:public static main( String args[] )
        Test window = new Test();
        // maybe some code to generate something to draw???
        window.draw();
    }This is what I think you are trying to do.
    On the other hand, if your draw() method was some kind of universal method that didn't depend in any way on the current configuration of your instance, you could simply define draw() as static at which point your main method (or a method in an external class) could invoke it directly, without a corresponding instance. But if you did that, the draw() method itself would only be able to access static variables and methods.
    Doug

  • Non-static method rff() cannot be referenced from a static context

    I get the above error when compiling my program, can anybody see what the problem is and how to fix it? its at the readstr = rff(); part after the if (i==2)
    import java.io.*;
    import java.util.Vector;
    public class PropertyRental
        public static Vector v = new Vector();
        public static String menu;
        public static String pc, hn, mr, ua, readstr;
        public static int i, ln;
        public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        public String rff()
            String line="";
            String data="";
            try
            BufferedReader br = new BufferedReader(new FileReader("properties.txt"));
            line = br.readLine();
                do// EOF condition
                System.out.println(line);
                data = data + " \n" + line;
                //line = br.readLine();
            while( (line=br.readLine()) != null);
            catch(IOException ioe)
            return data;   
        public static void main()
            try
                do
                System.out.println("Welcome to your local Property Rental Company");
                System.out.println("You now have the following options");
                System.out.println("");
                System.out.println("1. Add a Property");
                System.out.println("2. Remove a Property");
                System.out.println("3. Display all Properties");
                System.out.println("4. Exit the Program");
                System.out.println("");
                i = Double.valueOf(br.readLine()).intValue();
                System.out.println("");
                if(i == 1)
                    //BufferedWriter appends to properties.txt
                    //Our user input buffer
                    BufferedReader user = new BufferedReader(new InputStreamReader(System.in));
                    System.out.println("--- Add a Property ---");
                        //User enters address
                        System.out.println("\nEnter postcode (Must be less than 16 characters)");
                        pc = user.readLine();
                        //If the user has entered 'q' to quit, leave this loop
                        System.out.println("Enter house number");
                        hn = user.readLine();
                        System.out.println("Enter monthly rent");
                        mr = user.readLine();
                        //Write our details to file
                        v.addElement(new PropertyToLet(pc, hn, mr));
                        PrintWriter outFile;
                        try
                            outFile = new PrintWriter(new FileWriter("properties.txt" ,true));
                            PropertyToLet obj = (PropertyToLet) (v.lastElement());
                            outFile.println(obj.getpc() + "," + obj.gethn() + "," + obj.getmr());     
                            outFile.close();
                        catch(IOException IOE)
                            System.err.println(IOE + "Has occured");
                if(i == 2)
                   try
                       readstr = rff();
                       String[] splitArray = null;
                       splitArray = readstr.split(",");
                       for(int i=0;i<splitArray.length;i++)
                           if (v.size()<splitArray.length)
                                v.addElement(new PropertyToLet(splitArray[0], splitArray[1], splitArray[2]))  ; 
                       System.out.println("\nEnter the line number of the property you wish to remove");
                       int ln = Double.valueOf(br.readLine()).intValue();
                       v.removeElementAt(ln-1);                  
                       PrintWriter outFile = new PrintWriter(new FileWriter("properties.txt"));
                       for (int i=0; i<v.size(); i++)
                            PropertyToLet obj = (PropertyToLet) (v.lastElement());
                            outFile.println(obj.getpc() + "," + obj.gethn() + "," + obj.getmr());     
                       outFile.close();
                    catch(Exception ex)
                        ex.printStackTrace();
                if(i == 3)
                      String line="";
                      String data="";
                      try
                          BufferedReader br = new BufferedReader(new FileReader("properties.txt"));
                          line = br.readLine();                     
                          int counter=0;
                          do// EOF condition
                              counter++;
                              System.out.println(counter + ": " + line);
                              data = data + " \n" + line;
                              //line = br.readLine();                                 
                          while( (line=br.readLine()) != null);
                          catch(IOException ioe)
                if(i == 4)
                    //A simple instruction that tells the user how to exit the program
                    System.out.println("Press the 'x' button in the corner of the window to quit");
                System.out.println("Do you want to exit [y/n]");
                ua = br.readLine();
                }while(ua.equals ("n"));
            catch(IOException ioe)
    }Edited by: Atomika3000 on Apr 23, 2009 4:09 AM

    You must add modifier method to be static because you access the method from the main method which is a static method
    public static String rff(){
    // code
    }     I hope it helps you, good luck.

Maybe you are looking for

  • Price Match Contract Phones - Call Mobile Back Office

    I went into my local Best Buy yesterday to purchase a new iPhone and asked to have it price matched with Walmart's $50 off deal. I was told that they do not price match contract phones. I told them that I had read on the Best Buy Forums that they do,

  • How to restrict in T-code J1id for particular tab

    Hi, i need restriction in J1ID for particular tab. Regards amit

  • How to turn a graphics2D object into a BufferedImage

    Is there a simple way to take a Graphics 2D I have drawn and turn it into a BufferedImage? MArk

  • Time machine not updating all files correctly.

    I went to recover a file today from time machine, and upon recovering it found out that it hasn't been backed up for over 2 months. This is a little concerning since it appears that all is going well. Does anyone know how to fix this or a way to trou

  • Linking to Excel cells

    I am running Dreamweaver 8.0.2 and would like to create a link on a page to a specific cell in an Excel worksheet. (All files are in the same folder.) I have tried entering the code "Name of Worksheet.xls#Nameoftab!X25", but the link just opens the e