2016-04-10 5 views
-4

Я работаю над проектом (тем же самым, что и мой последний вопрос), и я решил реализовать JButtons для «создания» оружия и снаряжения, но в примере о том, как для реализации JButton он использовал инициализацию, buttonName.setText() [Я игнорирую это, потому что в моей инициализации я уже установил текст] и getContentPane(). add (buttonName); Я попытался использовать эту строку для настройки JButton, но безрезультатно. Я получил эту ошибку: Adventurine.java:272: ошибка: не могу найти символ. Любые идеи относительно того, почему это так, или я просто являюсь идиотом, и я что-то упускаю?getContentPane не работает, символ не найден Ошибка

ЛЮБАЯ помощь приветствуется.

EDIT:

Вот код, я использую, в 3-х различных стилей Style 1:

private JButton craftClub = new JButton("Craft A Club"); 
    getContentPane().add(craftClub); 

Стиль 2:

private JButton craftClub = new JButton("Craft A Club"); 
    frame.getContentPane().add(craftClub); 

Стиль 3:

private JButton craftClub = new JButton("Craft A Club"); 
    frame.getContentpane(); 
    frame.add(craftClub); 

для стиля 1 Я получаю не могу найти ошибки символов на getContentPane и craftClub для стиля 2 Я ожидаю на getContentPane перед (и a ';' ожидается на. в .add (craftClub); для стиля 3 Я ожидаю

+0

вы собираетесь найти, что ТАК я более полезно при включении фактического кода для вашей проблемы и фактической ошибки stacktrace. – billjamesdev

+0

У меня есть код, но у меня отсутствует ошибка stacktrace, я не знаю, где ее найти на macs. – Rocket6488

+0

Это ошибка компилятора, а не исключение. – SLaks

ответ

0

Ну, я мог бы использовать больше кода, но некоторые подсказки в том, что вы написали, дают мне представление. Я думаю, что вы кладете эту линию в том месте:

frame.getContentPane().add(craftClub); 

Я думаю, что вы, вероятно, есть код:

class Demo { 
    private JFrame frame = new JFrame("MyFrame"); 
    private JButton craftClub = new JButton("Craft A Club"); 
    frame.getContentPane().add(craftClub); // This is bad 

    public static void main(String[] args) { 
     Demo demo = new Demo(); 
     // more stuff here 
    } 
} 

И это проблема. Вам нужно знать разницу между декларацией и инициализацией.

Изменить код на что-то вроде этого:

class Demo { 
    private JFrame frame; 
    private JButton craftClub; 

    Demo() { 
     frame = new JFrame("MyFrame"); 
     craftClub = new JButton("Craft A Club"); 
     frame.getContentPane().add(craftClub); // this code is called when you new Demo() in the main 
    } 

    public static void main(String[] args) { 
     Demo demo = new Demo(); 
     // more stuff here 
    } 
} 

Если этого не достаточно, чтобы вы, где вы хотите быть ... Вы должны размещать больше кода, так что я могу ответить больше ваш контекст.

+0

Итак, вы говорите, что ему нужно добавить в настройку JFrame? потому что это не то, где я сейчас это делаю? – Rocket6488

+0

Я говорю, что вы не можете выполнять код (помимо «новых» утверждений, которые вам не следует делать в любом случае) в той же области, которую вы объявляете членам своего класса. Я переместил этот «frame.getContentPane()), добавив« вызов в место, где это законно. Но я только предполагаю, что вы делали это неправильно, так как вы только решили показать нам, как 2 строки кода. – billjamesdev

+0

Я пробовал за пределами установки JFrame, вот почему, извините, я не мог получить достаточный контекст – Rocket6488

1

Это ...

private JButton craftClub = new JButton("Craft A Club"); 
getContentPane().add(craftClub); 

выглядит подозрительным, это выглядит, как вы пытаетесь добавить вас кнопку за пределами метода или исполнительное контексте, что и вы misdefining переменные, но я бы ожидать увидеть другую ошибку

Вместо этого, вы должны добавить свою кнопку только в контексте исполнения сделок, как метода или конструктора, например ...

public class Awesomeness { 
    private JFrame frame; 
    private JButton craftClub = new JButton("Craft A Club"); 

    public Awesomeness() { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       frame = ...; 
       //... 
       frame.add(craftButton); 
       // frame.getContentPane().add(craftButton); 
      } 
     }); 
    } 
} 
Смежные вопросы