Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Не могу понять в чём дело.... / 12 сообщений из 12, страница 1 из 1
08.10.2007, 22:15:21
    #34855318
Eliya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять в чём дело....
Яву я изучаю недавно. Возникла задача следующего плана: создать контейнер типа JFrame и разместить на нём компонент, унаследованный от JComponent . Этот производный компонент должен менять форму курсора при наведении на него, и реагировать на событие mousePressed , выводя сообщение "Mouse pressed on MyComponent" . Внешне компонент выглядит как чёрный прямоугольник. Я это сделал вот так:

Код: plaintext
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.
 import  java.awt.*;
 import  java.awt.event.*;
 import  javax.swing.*;

 class  MyComponent  extends  JComponent{
	
	String msg = "";  //
	MyComponent(){
	
		setSize( 100 ,  100 );
		addMouseListener( new  MouseAdapter(){
			 public   void  mousePressed(MouseEvent me){
				msg = "Mouse pressed on MyComponent";
				repaint();
			}
		});
		setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
		setVisible(true);
	}
	
	 public   void  paintComponent(Graphics g) {
		 super .paintComponent(g);
		g.fillRect( 0 ,  0 ,  100 ,  100 );
		g.drawString(msg,  500 ,  500 );
	}
}

 class  MyFrame  extends  JFrame{
	
	MyFrame(){
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		getContentPane().add( new  MyComponent());
		setSize( 800 ,  600 );
		setVisible(true);
	}
	
	 public   static   void  main(String[] args) {
                          new  MyFrame();
	}	
}
Но где-то я напартачил: форма курсора меняется везде и на событие mousePressed откликается и главное окно JFrame .
Если есть такой человек, который может помочь, я был бы ему очень признателен.
...
Рейтинг: 0 / 0
08.10.2007, 22:25:36
    #34855321
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять в чём дело....
у вас компонент растянулся на всю форму
читайте про Layout
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
08.10.2007, 22:32:11
    #34855331
Eliya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять в чём дело....
Deady
у вас компонент растянулся на всю форму
читайте про Layout
Posted via ActualForum NNTP Server 1.4

Извините за грубость, а причём здесь это, ведь по умолчанию используется FlowLayout
...
Рейтинг: 0 / 0
08.10.2007, 22:42:48
    #34855344
jusio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять в чём дело....
Eliya Deady
у вас компонент растянулся на всю форму
читайте про Layout
Posted via ActualForum NNTP Server 1.4

Извините за грубость, а причём здесь это, ведь по умолчанию используется FlowLayout

Какой дебил вам это сказал? По дефолту у JFrame используется BorderLayout. У JPanel - FlowLayout.

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JFrame.html
...
Рейтинг: 0 / 0
08.10.2007, 22:51:31
    #34855356
Eliya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять в чём дело....
jusio Eliya Deady
у вас компонент растянулся на всю форму
читайте про Layout
Posted via ActualForum NNTP Server 1.4

Извините за грубость, а причём здесь это, ведь по умолчанию используется FlowLayout

Какой дебил вам это сказал? По дефолту у JFrame используется BorderLayout. У JPanel - FlowLayout.

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JFrame.html

Дебилов зовут П.Ноутон и Г.Шилдт :)
...
Рейтинг: 0 / 0
08.10.2007, 22:53:13
    #34855358
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять в чём дело....
кстати, если не ошибаюсь, setSize сработает только при отключенном менеджере компоновки, он вроде с setBounds() коррелирует.
с менеджером нужно использовать setPrefferedSize(), setMinimumSize(), setMaximumSize()
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
08.10.2007, 22:54:09
    #34855360
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять в чём дело....
"Eliya" <nospam@sql.ru>;


Дебилов зовут П.Ноутон и Г.Шилдт :)



читайте лучше Хорстмана и Портянкина. этим можно доверять :)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
08.10.2007, 22:58:54
    #34855365
Eliya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять в чём дело....
Deady
кстати, если не ошибаюсь, setSize сработает только при отключенном менеджере компоновки, он вроде с setBounds() коррелирует.
с менеджером нужно использовать setPrefferedSize(), setMinimumSize(), setMaximumSize()
Posted via ActualForum NNTP Server 1.4
Я понимаю, что прошу много, но не могли бы Вы показать конкретно что нужно сделать я уже с ума сошёл
...
Рейтинг: 0 / 0
08.10.2007, 23:04:13
    #34855370
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять в чём дело....
завтра. сегодня вечер, любимая женщина, пиво, кино :)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
08.10.2007, 23:06:30
    #34855371
Eliya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять в чём дело....
Deady
завтра. сегодня вечер, любимая женщина, пиво, кино :)
Posted via ActualForum NNTP Server 1.4

Извините, а во сколько: просто я работаю 2/2
...
Рейтинг: 0 / 0
09.10.2007, 00:52:46
    #34855417
jusio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять в чём дело....
JFrame выставить setLayout(null), потом MyComponent выставить setBounds(0,0,100,100)
...
Рейтинг: 0 / 0
09.10.2007, 10:16:53
    #34855855
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять в чём дело....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 public   class  MyFrame  extends  JFrame {

    MyFrame() {
        setDefaultCloseOperation( EXIT_ON_CLOSE );
        JPanel panel =  new  JPanel();
        getContentPane().add( panel );
        panel.add(  new  MyComponent() );
        setSize(  800 ,  600  );
        setVisible( true );
    }

     public   static   void  main( String[] args ) {
         new  MyFrame();
    }


}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Не могу понять в чём дело.... / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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