Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Java 2D(class Graphics) / 11 сообщений из 11, страница 1 из 1
06.05.2007, 00:54:10
    #34507394
Java 2D(class Graphics)
Имеется следующий код:

[quot]
Код: plaintext
1.
2.
3.
4.
5.
6.
	
	JPanel Plot =  new  JPanel();
	Plot.setPreferredSize( new  Dimension( 600 , 400 ));
	Graphics Canvas = Plot.getGraphics();
	Canvas.drawString("String",  10 ,  10 );

[/
quot]

однако при запуски вместо обещанной строки на панели возникает NullPointerException... В чем проблема?
...
Рейтинг: 0 / 0
06.05.2007, 10:46:22
    #34507513
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java 2D(class Graphics)
на какой строчке возникает nullPointerException
поточнее


а рисовать лучше на JLabel которую поместить на JPanel
...
Рейтинг: 0 / 0
06.05.2007, 11:13:29
    #34507527
Java 2D(class Graphics)
llemingна какой строчке возникает nullPointerException
поточнее


в этой срочке:
Код: plaintext
1.
Canvas.drawString("String",  10 ,  10 );
...
Рейтинг: 0 / 0
06.05.2007, 11:46:01
    #34507539
Vurn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java 2D(class Graphics)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
JFrame plot =  new  JFrame("Microtest");
plot.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
plot.setSize( new  Dimension( 600 , 400 ));
plot.setLayout( null );
plot.setVisible(true);
Graphics canvas = plot.getContentPane().getGraphics();
canvas.drawString("String",  10 ,  10 );
1. имена переменных должны начинаться с маленькой буквы (см.Code Convetions)
2. JPanel может только добавляться на JFrame || JDialog
3. вместо setPrefferedSize для JFrame && JDialog надо юзать setSize (или вилку setMinimumSize/setMaximumSize
4. если рисуешь через Graphics, надо снять умалчиваемый BorderLayout Manager, через .setLayout(null)
5. Graphics надо ловить с выведенного на экран фрейма.
...
Рейтинг: 0 / 0
06.05.2007, 11:52:49
    #34507542
Vurn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java 2D(class Graphics)
А вообще, скачай тутор по свингу и посмотри работу с лэйаут менеджерами. Раскладка через лэйаут дает кучу возможностей, не достижимых никакими другими методами. Например, накидал ты через Graphics на абсолютные координаты. У тебя все красиво. А у пользователя зрение слабое и он ставит крупные шрифты. Оп-па, а читать он уже не может - нихрена никуда не лезет. Или лезет, но накладывается друг на друга. А лэйаут менеджер пересчитает размеры компонентов и растянет диалог. И вне зависимости от шрифтов/языка и прочих тонкостей все четко и красиво.
...
Рейтинг: 0 / 0
06.05.2007, 11:59:15
    #34507547
Java 2D(class Graphics)
Такой ещё вопрос... А можно как-то рисовать внутри ScrollPane.
...
Рейтинг: 0 / 0
06.05.2007, 12:11:56
    #34507553
Java 2D(class Graphics)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
JFrame plot =  new  JFrame("Microtest");
plot.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
plot.setSize( new  Dimension( 600 , 400 ));
plot.setLayout( null );
plot.setVisible(true);
Graphics canvas = plot.getContentPane().getGraphics();
canvas.drawString("String",  10 ,  10 );

...попробовал... Почему-то окошко пустое
...
Рейтинг: 0 / 0
06.05.2007, 12:33:01
    #34507570
Vurn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java 2D(class Graphics)
Пустое - это запросто. Любое изменение окна сотрет строку. Чтобы строка была вне зависимости от "телодвижений", надо писать чутка по другому:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 import  javax.swing.*;
 import  java.awt.*;
 public   class  Test01  extends  JComponent {
     public   static   void  main(String[] args) {
        JFrame plot =  new  JFrame("Microtest");
        plot.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        plot.setLayout( new  BorderLayout());
        plot.setSize( new  Dimension( 600 , 400 ));
        plot.setContentPane( new  Test01());
        plot.setVisible(true);
     }
    @Override
     public   void  paint(Graphics g) {
         super .paint(g);    
        g.drawString("String",  10 ,  10 );
    }
}
...
Рейтинг: 0 / 0
06.05.2007, 12:45:42
    #34507581
Java 2D(class Graphics)
Биг сеньк ю!

А всё-таки можно ли рисовать на конкретной Панели, а что ещё лучше внутри JScrollPane... В окошко кроме графики ещё много чего напихать хочется
...
Рейтинг: 0 / 0
06.05.2007, 12:57:35
    #34507589
Vurn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java 2D(class Graphics)
Рисовать - ессно можно.
Смотри туториал по скролл-пейну
http://java.sun.com/docs/books/tutorial/uiswing/components/scrollpane.html
...
Рейтинг: 0 / 0
06.05.2007, 20:50:07
    #34508031
Java 2D(class Graphics)
пасиба!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Java 2D(class Graphics) / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]