Почему это выдает исключение из незаконного состояния? [Дубликат]

Вы можете сделать это, используя objcopy:

objcopy --input binary --output elf64-x86-64 myfile.txt myfile.o

Теперь у вас есть объектный файл, который вы можете связать с вашим исполняемым файлом, который содержит символы для начала, конца и размера содержимого из myfile.txt.

7
задан grimrader22 2 June 2012 в 23:34
поделиться

2 ответа

Взглянув на API , это исключение вызывается, если компонент не отображается. В этом случае это Canvas.peer равно null. Взгляд на поле peer показывает, что

Параметр устанавливается, когда Component добавляется в контейнер, который также является равноправным узлом

] Поскольку вы запускаете поток обновлений из конструктора вашего компонента, render можно вызвать до того, как ваш компонент будет добавлен в другой контейнер, что означает, что peer - null, а затем будет выбрано IllegalStateException.

7
ответ дан Jeffrey 17 August 2018 в 14:29
поделиться
  • 1
    Извините, если я глуп, но когда добавлен компонент, это то, о чем я запутался, когда shuold называю метод render? – grimrader22 2 June 2012 в 23:31
  • 2
    Вы должны только вызвать метод render после того, как Base был добавлен в контейнер. В коде, который вы нам показали, Base никогда не добавляется в контейнер. – Jeffrey 2 June 2012 в 23:32
  • 3
    Я просто добавил базовый код, было бы лучше, если бы я положил все это в один класс? – grimrader22 2 June 2012 в 23:35
  • 4
    @ grimrader22 Проблема заключается в том, что между тем временем, когда вы создаете Base, и оно добавляется к Screen, поток обновлений, который вы начали, возможно, уже вызвал render. Вам нужно либо вызвать start отдельно от конструктора Base, либо добавить Base в JFrame в конструкторе Base перед вызовом start. – Jeffrey 2 June 2012 в 23:40
  • 5
    поэтому я должен назвать метод start, В основном классе, где основной метод? – grimrader22 2 June 2012 в 23:49

По моему опыту с этой ошибкой и с кодом, который вы пишете, вам не хватает функции фрейма.

Добавьте, где ваши кадры (например: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);) и добавьте функцию frame.add(game);

В этом примере моя Display game = new Display();, но в зависимости от того, какая ваша переменная для новый дисплей, он может отличаться.

3
ответ дан CubeJockey 17 August 2018 в 14:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: