2014-06-01 4 views
0

Итак, я очень новый программист, и я смотрел учебник по youtube о том, как сделать прослушиватель мыши. Я все еще очень нечеткий в том, что прослушиватель мыши, но где мой код в настоящее время стоит (я в основном просто копировал его с видео), фон начинает белым, а когда мышь отпущена, фон меняется на красный.Отображение изображения при щелчке мышью?

Что я на самом деле хочу сделать, это отобразить изображение, а когда мышь выпущена, отобразите другое изображение.

Как это сделать?

Вот мой текущий код:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.JFrame; 
import javax.imageio.*; 
import java.applet.Applet; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Image; 
import java.awt.Toolkit; 
import java.net.URL; 


public class switchScreens extends JFrame{ 
    private JPanel mousepanel; 
    private JLabel statusbar; 

    public switchScreens(){ 
     super("title"); 

     mousepanel = new JPanel(); 
     mousepanel.setBackground(Color.WHITE); 
     add(mousepanel, BorderLayout.CENTER); 

     Handlerclass handler = new Handlerclass(); 
     mousepanel.addMouseListener(handler); 
    } 
     private class Handlerclass implements MouseListener 
     { 
      public void mouseClicked(MouseEvent event){ 
      } 
      public void mousePressed(MouseEvent event){ 
      } 
      public void mouseReleased(MouseEvent event){ 
       mousepanel.setBackground(Color.RED); 
      } 
      public void mouseEntered(MouseEvent event){ 
      } 
      public void mouseExited(MouseEvent event){ 
      }  
    } 

} 

Update: Мой новый код; фон не меняется вообще при нажатии

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.imageio.*; 
import java.applet.Applet; 
import java.awt.BorderLayout; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Image; 
import java.awt.Toolkit; 
import java.net.URL; 
import javax.swing.JFrame; 


public class switchScreens extends JFrame{ 

    private JLabel mousetest; 
    ImageIcon icon = new ImageIcon("Untitled.png"); 

    public switchScreens(){ 

     mousetest = new JLabel(); 
     add(mousetest, BorderLayout.CENTER); 

     Handlerclass handler = new Handlerclass(); 
     mousetest.addMouseListener(handler); 
    } 
     private class Handlerclass implements MouseListener 
     { 
      public void mouseClicked(MouseEvent event){ 
      } 
      public void mousePressed(MouseEvent event){ 
      } 
      public void mouseReleased(MouseEvent event){ 
       mousetest.setIcon(icon); 
      } 
      public void mouseEntered(MouseEvent event){ 
      } 
      public void mouseExited(MouseEvent event){ 
      }  
    } 

ответ

2

Вы утверждаете, что:

  • фон начинает белый и когда мышь будет отпущена, фон меняется на красный.
  • Что я на самом деле хочу сделать, это отобразить изображение, а когда мышь выпущена, отобразите другое изображение.

И вы покажете этот код:

public void mouseReleased(MouseEvent event){ 
    mousepanel.setBackground(Color.RED); 
} 

Таким образом, вы знаете, как использовать MouseListener и где код должен пойти, чтобы сделать ваши изменения, и поэтому решение вашей проблемы является своего рода простым - вместо mousepanel.setBackground(Color.RED); введите код, чтобы изменить изображение. Но все важные особенности того, как это сделать, будут зависеть от деталей вашей проблемы, деталей, которые вы нам не сказали или не показали. Особенности, такие как изображение? Где его отображать? На сайте мыши? Вы знаете, как отображать любое изображение?


Редактировать
Итак, еще раз, каковы детали вашей проблемы?

  • Если у вас есть несколько изображений, и они большие, вы, скорее всего, захотите прочитать их в переменных перед визуализацией графического интерфейса, возможно, в конструкторе своего класса. Обычно я читаю свои изображения с использованием метода ImageIO.read(...).
  • Если ваша цель - предоставить графическому интерфейсу фоновое изображение на mouseReleased, тогда один из способов - поместить JLabel в ваш JFrame, преобразовать изображение в ImageIcon, а затем вызвать функцию JLabel setIcon(myIcon) на mouseReleased, передав ImageIcon, созданный в вызове метода.
  • Если ваша цель - это нечто совсем другое, вам снова нужно будет рассказать нам подробности.
+0

Ну, я просто скопировал код из видео с youtube, так что нет, я действительно не понимаю. я могу поместить ссылку изображения, где у меня есть «Color.RED»? – user3696172

+0

@ user3696172: вы не должны слепо копировать код именно по этой причине. Вы все еще не рассказали подробности своей проблемы. Вы пытаетесь нарисовать небольшое изображение на месте мыши? Изменить фоновое изображение? Какие? Эти детали ** очень важны.Что касается замены «ссылки на изображение», что бы это ни значило, тогда нет. Вы захотите проверить API Java для метода 'setBackground (...)', так как если бы вы это сделали, вы увидите, что он принимает параметр Color, и все. –

+0

@ user3696172: Я отредактировал свой ответ, чтобы предоставить более подробную информацию. Пожалуйста, смотрите. –

Смежные вопросы