Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
6 / 6 / 2
Регистрация: 16.01.2011
Сообщений: 166

Ошибка в методе

15.12.2011, 15:36. Показов 1382. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите найти ошибку. Есть класс:
Java
1
2
3
4
5
6
7
8
9
10
package prog;
 
import javax.swing.JFrame;
 
 
public class NewClass extends JFrame{
     public void show(){
         getGraphics().drawLine(0, 0, 0, 0);
     }
}
И есть программа использующая этот класс, вот так:
Java
1
2
        NewClass newClass1=new NewClass();
        newClass1.show();
При компиляции вот такая ошибка: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException. Не подскажете в чём проблема?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.12.2011, 15:36
Ответы с готовыми решениями:

Ошибка в методе
Помогите найти ошибку Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) ПараметрыОпции=Новый...

Ошибка в методе
Добрый день! Ребят, нужна помощь! Ошибка в методе, вижу, но не могу исправить. Вот мой код: using System; using...

Ошибка в методе
Друзья, помогите, вот задание. Не могу написать, не понимаю как. Добавьте метод Geometry.GetLength, вычисляющий длину сегмента, и метод...

9
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.12.2011, 15:44
public Graphics getGraphics()
Creates a graphics context for this component. This method will return null if this component is currently not displayable.
Overrides:
getGraphics in class Component
Returns:
a graphics context for this component, or null if it has none
http://docs.oracle.com/javase/... tGraphics()
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
15.12.2011, 15:53
у JFrame уже есть метод show и он deprecated, назови myshow и всё будет работать )
1
6 / 6 / 2
Регистрация: 16.01.2011
Сообщений: 166
15.12.2011, 15:57  [ТС]
Ну вообще это задумывалось как переопределение метода? А как это правильно сделать, чтобы переопределить метод? Или depercated метод нельзя переопределить?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
15.12.2011, 16:56
Цитата Сообщение от KobaEugeneA Посмотреть сообщение
Ну вообще это задумывалось как переопределение метода? А как это правильно сделать, чтобы переопределить метод? Или depercated метод нельзя переопределить?
Переопределить ты его можешь, но только каличным образом, а так как он депрекатнутый то позднее могут быть проблемы
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import javax.swing.JFrame;
 
public class ShowOver {
 
    public static class Words {
        public static void main(String[] args) {
            NewClass c = new NewClass();
            c.show();
        }
    }
 
    public static class NewClass extends JFrame {
        public NewClass() {
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setLayout(null);
            this.setSize(100, 100);
            this.setVisible(true);
        }
 
        public void show() {
            super.show();
            System.out.println("Тут я делаю своё");
        }
    }
}
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.12.2011, 17:01
KobaEugeneA, можно, просто здесь ситуация такая. Перечитайте второй пост. Там написано, что null возвращается в том случае, если компонент не отображен. Но проблема в том, что чтобы его отобразить - надо вызвать метода show, но он deprecated, или вызвать его обертку setVisible
Java
1
2
3
4
5
6
7
8
9
10
11
    /**
     * Shows or hides this component depending on the value of parameter
     * <code>b</code>.
     * @param b  if <code>true</code>, shows this component;
     * otherwise, hides this component
     * @see #isVisible
     * @since JDK1.1
     */
    public void setVisible(boolean b) {
        show(b);
    }
Вы же переопределили метод show, не отобразив до этого фрейм, и при получении графикса получаете заслуженный NullPointerException
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
15.12.2011, 17:09
вот смотри что ты хочешь переопределить )))
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/**
     * Makes the Window visible. If the Window and/or its owner
     * are not yet displayable, both are made displayable.  The
     * Window will be validated prior to being made visible.
     * If the Window is already visible, this will bring the Window
     * to the front.
     * @see       Component#isDisplayable
     * @see       #toFront
     * @deprecated As of JDK version 1.5, replaced by
     * {@link #setVisible(boolean)}.
     */
    @Deprecated
    public void show() {
        if (peer == null) {
            addNotify();
        }
        validate();
 
        isInShow = true;
        if (visible) {
            toFront();
        } else {
            beforeFirstShow = false;
            closeSplashScreen();
            Dialog.checkShouldBeBlocked(this);
            super.show();
            locationByPlatform = false;
            for (int i = 0; i < ownedWindowList.size(); i++) {
                Window child = ownedWindowList.elementAt(i).get();
                if ((child != null) && child.showWithParent) {
                    child.show();
                    child.showWithParent = false;
                }       // endif
            }   // endfor
            if (!isModalBlocked()) {
                updateChildrenBlocking();
            } else {
                // fix for 6532736: after this window is shown, its blocker
                // should be raised to front
                modalBlocker.toFront_NoClientCode();
            }
            if (this instanceof Frame || this instanceof Dialog) {
                updateChildFocusableWindowState(this);
            }
        }
        isInShow = false;
 
        // If first time shown, generate WindowOpened event
        if ((state & OPENED) == 0) {
            postWindowEvent(WindowEvent.WINDOW_OPENED);
            state |= OPENED;
        }
    }
Добавлено через 2 минуты
Цитата Сообщение от M128K145 Посмотреть сообщение
public void setVisible(boolean b) {
show(b);
}
вообщето там не так ))) а так
Java
1
2
3
    public void setVisible(boolean b) {
        super.setVisible(b);
    }
а супер у нас Component
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.12.2011, 17:15
mutagen, да, забыл уточнить, Component.class, JDK 1.5
1
6 / 6 / 2
Регистрация: 16.01.2011
Сообщений: 166
16.12.2011, 14:31  [ТС]
Спасибо большое, разобрался. Ещё вопрос, что можно сделать, чтобы потом отрисованные компоненты можно было удалять? А то я что-то это даже в теории не представляю.
P. S. Не полностью всё нарисованное, а например именно последний отрисованный компонент.
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
16.12.2011, 15:42
Отрисованный или добавленный в контейнер? Если просто отрисованный - перерисовать без него. Если добавленный в контейнер - удалить из контейнера через remove и вызвать revalidate.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.12.2011, 15:42
Помогаю со студенческими работами здесь

Ошибка в методе
Добрый день уважаемые форумчани! Дописываю дипломный проект, программа проверяет и копирует нужные файлы с сервера на клиентский...

Ошибка в методе
Здравствуйте. Как устранить данную ошибку Call to undefined method DB::n() on line 61 $db=new DB; //if url string non empty ...

Нужно чтобы введённый студент в методе in вывелся на экран как в методе out
#include&lt;conio.h&gt; #include&lt;stdio.h&gt; #include&lt;iostream.h&gt; #include&lt;windows.h&gt; #include&lt;cstring.h&gt; // это просто для русских...

Ошибка в методе POST
Метод пост не передает русские буквы , в чем проблема? Добавлено через 4 минуты &lt;form action=&quot;reg.php&quot;...

Ошибка в методе Эйлера
Добрый вечер. При решении уравнения второго порядка методом Эйлера Mathcad ругается. Подскажите, пожалуйста, в чем ошибка.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru