Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Приложение не "слушает" мышь, Приложение не реагирует на кнопки мыши 
V
    Опции темы
elija
Дата 27.5.2010, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 23.5.2010

Репутация: нет
Всего: нет



Пишу лабораторную. Надо реализовать появление вращающихся звезд и возможность регулирования их скорости. Появляться звезды должны на среднюю кнопку мыши, увеличиваться скорость вращения  на ЛКМ, уменьшаться на ПКМ.
Почему то не работает обработчик событий кнопок мыши.
В джаве я новичок...

Код

import java.awt.event.*;
import java.util.*;

import javax.swing.JComponent;
import javax.swing.JFrame;

class Main extends JComponent implements Runnable
{
     private class MouseClick extends MouseAdapter 
     {
       public void mouseClicked(MouseEvent event) 
          {
            if (event.getButton() == MouseEvent.BUTTON1) {
                System.out.println("Left mouse button");
            } else if (event.getButton() == MouseEvent.BUTTON2) {
                System.out.println("Middle mouse button");
            } else if (event.getButton() == MouseEvent.BUTTON3) {
                System.out.println("Right mouse button");
            }
          }
        
    }
    
    private static final long serialVersionUID = 1L;
    public ArrayList<Square> squares;
    public Thread t;
    MouseClick mouse_control;
    
    Main()
    {
        new Thread(this).start();
        mouse_control = new MouseClick();
        addMouseListener(mouse_control);
    }
      
    public void addItem(JFrame frame, int speed, int width, int height) 
    {
        Square sq = new Square(speed,width, height);
        sq.setBounds(0, 0, 1024, 1000);
        this.squares.add(sq);
        frame.add(sq);

    }

     public void run()
     {
      try
      {
       while(true)
       {
           Thread.currentThread();
           Thread.sleep(10);
           for (int i = 0; i < squares.size(); i++) 
           {
               squares.get(i).rotateRect();
               squares.get(i).repaint();
           }
       }
      }
      catch(Exception ex){}
     }
 
     public static void main(String [] args)
     {
    
         Main m = new Main();
         
      JFrame f=new JFrame("STARS");
      
      f.setLayout(null);

      m.squares = new ArrayList<Square>();
      
      m.addItem(f, 1, 30, 30);
      m.addItem(f, 1, 220, 30);
      m.addItem(f, 10, 220, 230);
      
     f.add(m);

     f.setSize(400, 400);
     f.setVisible(true);
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      m.run();
      
     }
}


Код

import java.awt.Color;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.geom.*;

import javax.swing.JComponent;
import java.io.*;

public class Square  extends JComponent//  implements Runnable
{
     AffineTransform at = new AffineTransform();
     double angle=0;
     int width=0, height=0;
     
        public Shape shape;
        public Color color;
       
     
     Square(double angle, int width, int height)
     {
      this.angle=angle;
      this.width=width;
      this.height=height;
     }
     
     public void paint(Graphics g)
     {
      Graphics2D g2=(Graphics2D)g;
      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
       //Rectangle rect=new Rectangle(20, 20, width, height);
       
       Path2D.Double path = new Path2D.Double();
       path.moveTo(22 + width, 1 + height);
       path.lineTo(27 + width, 16 + height);
       path.lineTo(42 + width, 16 + height);
       path.lineTo(30 + width, 25 + height);
       path.lineTo(35 + width, 40 + height);
       path.lineTo(22 + width, 31 + height);
       path.lineTo(9 + width, 40 + height);
       path.lineTo(14 + width, 25 + height);
       path.lineTo(2 + width, 16 + height);
       path.lineTo(17 + width, 16 + height);
       
       path.closePath();
   
       path.transform(at);
       
     // g2.transform(at);
      //g2.draw(rect);
      g2.setColor(Color.RED);
      g2.fill(path);
      g2.draw(path);
     }
     

     
     public void rotateRect()
     {
          at.rotate(Math.toRadians(angle), 22 + width, 22 + height);
     }
}


PM MAIL   Вверх
pathfinder
Дата 27.5.2010, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 3.3.2010

Репутация: 7
Всего: 10



Потому-что размеры у Main не установлены
PM MAIL   Вверх
elija
Дата 27.5.2010, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 23.5.2010

Репутация: нет
Всего: нет



Цитата(pathfinder @  27.5.2010,  18:12 Найти цитируемый пост)
Потому-что размеры у Main не установлены

простите, я не совсем Вас понял, какие размеры? если у вас получить написать "правильные" размеры и после компиляции программа реагирует на кнопки мыши, поделитесь секретом!
PM MAIL   Вверх
pathfinder
Дата 27.5.2010, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 3.3.2010

Репутация: 7
Всего: 10



Код

Main m = new Main();
m.setSize(new java.awt.Dimension(200, 200));
//m.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.BLACK)); // раскоментировать что-бы увидеть компонент

PM MAIL   Вверх
elija
Дата 27.5.2010, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 23.5.2010

Репутация: нет
Всего: нет



спасибо! теперь работает!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.