PDA

View Full Version : مشکل با netbeans وstatic



ba_1980
شنبه 17 دی 1390, 12:46 عصر
اگر عنوانم درست نیست عنوانی دیگری به ذهنم نرسید
برنامه زیر توی notepad مینوسم واجرا می کنم هیچ مشکلی ندارم
ولی اون تو netbeans می نویسم errorزیر میده
non-static variable this cannot be referenced from a static context
البته با static کردن کلاس SimpleFrame برنامه اجرا میشه
من دلیلش نمیفهم دوستان اگر میدوند به ما هم یاد بدند

import javax.swing.*;


public class SimpleFrameTest
{
public static void main(String[] args)
{
SimpleFrame frame = new SimpleFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
frame.setVisible(true);
}
}

class SimpleFrame extends JFrame
{
public SimpleFrame()
{
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
}

public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
}

spiderman200700
شنبه 17 دی 1390, 12:57 عصر
در جاوا،توی متدها و بلاک های static ، فقط میتونی از متد ها و متغییر های static استفاده کنی.مگر اینکه متغیر رو داخل خود متد static تعریف کنی.
هر چیز دیگه ای غیر از این باشه خطایی رو که واستون پش اومده بود رو میده.

ba_1980
شنبه 17 دی 1390, 13:30 عصر
انگار خوب سوال نکردم من این برنامه تو محیط داس اجرا کردم هیچ مشکلی نداشتم و error استاتیک به من نداد ولی تو netbeans همچین error داد

ba_1980
شنبه 17 دی 1390, 16:55 عصر
من مشکلم با جابجایی کلاس SimpleFrameبا کلاس متد mainحل کردم بدون اضافه کردن کلمه static ولی هنوز نفهمیدم چرا حالت اول جواب نمیده؟

spiderman200700
شنبه 17 دی 1390, 22:13 عصر
من مشکلم با جابجایی کلاس SimpleFrameبا کلاس متد mainحل کردم بدون اضافه کردن کلمه static ولی هنوز نفهمیدم چرا حالت اول جواب نمیده؟

خوب متوجه نشدم.
یعنی کدت چطوری شده؟
اگه میشه اینجا بذارش تا کامل تر واست توضیح بدم.

ba_1980
یک شنبه 18 دی 1390, 10:25 صبح
کدی که در netbeans نوشتم و اجرا شد

class SimpleFrame extends JFrame
{
public SimpleFrame()
{
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
}
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
}

public class SimpleFramTest {


public static void main(String[] args) {
// TODO code application logic here
SimpleFrame frame = new SimpleFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
frame.setVisible(true);


}



}

spiderman200700
یک شنبه 18 دی 1390, 12:42 عصر
خب این دقیقا همون چیزیه که من گفتم دیگه.
"مگر اینکه متغیر رو داخل خود متد static تعریف کنی"
متد main به صورت static تعریف شده و وقتی داخل اون یه متغییر از کلاس SimpleFrame تعریف میکنی،یعنی میتونی از متد ها و متغییر های SimpleFrame استفاده کنی ،بدون اینکه اونا رو static تعریف کرده باشی.

اگه بازم جایی مبهم بود،بگو.

ba_1980
چهارشنبه 21 دی 1390, 10:27 صبح
مشکل چیز دیگه بود از بی دقتی من بود بعد از دو سال دو باره شروع کردن همینه
مشکل من در تعریف نام فایل بود!