2015-10-27 3 views
1

My Mouse Released не работает. В моем коде есть два JPanels (p1 и p2) в другом JPanel (p). и есть две кнопки с именем RED и GREEN. Мой код должен работать, как когда кто-то нажимает кнопки, панели должны быть изменены динамически. Но, к сожалению, когда я запускаю свою программу, кнопки «RED» и «GREEN» не отвечают. Здесь я добавил свои коды. Спасибо.MouseListener не работает

package animat; 

import java.awt.Color; 
import java.awt.event.*; 

import javax.swing.*; 



public class Animat extends JFrame{ 

Animat(){ 


JFrame j=new JFrame(); 

j.setSize(400,400); 
j.setVisible(true); 
JPanel p=new JPanel(); 

p.setSize(300,400); 
p.setLayout(null); 
p.setBackground(Color.BLACK); 
p.setVisible(true); 
j.add(p); 

JPanel p1=new JPanel(); 
p1.setBounds(0,50,400,350); 
p1.setBackground(Color.red); 
p1.setVisible(true); 
p.add(p1); 

JPanel p2=new JPanel(); 
p2.setBounds(0,50,400,350); 
p2.setBackground(Color.GREEN); 
p2.setVisible(true); 
p.add(p2); 

JButton b=new JButton("RED"); 
b.setBounds(0,0,100,50); 
b.setVisible(true); 
p.add(b); 

JButton b1=new JButton("GREEN"); 
b1.setBounds(100,0,100,50); 
b1.setVisible(true); 
p.add(b1); 

b.addMouseListener(new MouseAdapter(){ 
public void MouseReleased(MouseEvent e){ 
p.removeAll(); 
p.repaint(); 
p.revalidate(); 
p.add(p1); 
} 
}); 

b1.addMouseListener(new MouseAdapter(){ 
public void MouseReleased(MouseEvent e){ 
p.removeAll(); 
p.repaint(); 
p.revalidate(); 
p.add(p2); 
} 
}); 
} 
public static void main(String[] args) { 
    new Animat(); 
    } 

}

+2

Инстайн использования мышеловщика к кнопке. Вы можете использовать actionListener. b.addActionListener (новый ActionListener() {}); –

+0

@ Arc676 благодарит за ваше предложение. В случае MouseListener необходимо добавить все прослушиватели действий, такие как нажатие мыши, щелчок мышью, мышь с выпуском и т. Д., В то время как мышь-адаптер помогает мне выбрать только нужные мне действия. – Shishir

+0

Попробуйте 'ActionListener', как это предложил другой комментатор. Это то, что я имел в виду. Извините (я думал об обнаружении кликов на холсте). – Arc676

ответ

0

Вы - случайно - не отменяя функции вы хотели.

С помощью этого кода:

b1.addMouseListener(new MouseAdapter(){ 
    public void MouseReleased(MouseEvent e){ 
     p.removeAll(); 
     p.repaint(); 
     p.revalidate(); 
     p.add(p2); 
    } 
}); 

Вы добавляете новую функцию, вместо переопределения функции mouseReleased. Следовательно, он никогда не называется. Просто измените имя функции, чтобы начать с нижнего регистра, и он будет работать.

Примечание № 1: Вы можете подтвердить мое заявление ниже, добавив аннотацию @Override к вашей функции. В вашей среде IDE вам скажут, что вы на самом деле не переопределяете ничего (из-за опечатки) Примечание # 2: Вероятно, вы должны использовать mousePressed. Это более логично в этом случае (но ваш код работает также)

+0

Большое вам спасибо. ваше предложение сработало! Еще раз спасибо :) – Shishir

+0

«mouseReleased» вместо «MouseListener» сделал трюк. Спасибо, что ответили быстро. – Shishir

+0

Приятно слышать. :) –

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