2014-02-10 33 views
-1

由于我以前的帖子很乱,我决定重新发布它,但希望这次更清洁。mouseLIstener在JPanel/JDialog中“不工作”

因此,这里是我想与之合作的代码:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class sample extends JFrame implements ActionListener, MouseListener 
{ 
     JButton b1, b2; 
     JPanel panel1; 
     JDialog dialog; 


public sample() 
{ 
    dialog = new JDialog(); 
    dialog.setBounds (0,0,200,200); 

    panel1 = new JPanel(); 
    panel1.setLayout (new FlowLayout()); 

    b1 = new JButton("B1"); 
    add(b1); 
    b1.addActionListener (this); 
    b1.addMouseListener (this); 

    b2 = new JButton ("B2"); 
    panel1.add(b2); 
    b2.addMouseListener (this); 
    dialog.add(panel1); 

      /* I tried this but it didn't work as well: 
      dialog.addMouseListener(this); 
      panel1.addMouseListener(this); */ 
    } 

    public void actionPerformed (ActionEvent e) 
    { 
    if (e.getSource() == b1) 
     { 
      dialog.setVisible (true); 
     } 
    } 

    public void mouseClicked (MouseEvent e) 
    { 

    } 
    public void mouseEntered (MouseEvent e) 
    { 
     setCursor (new Cursor (Cursor.HAND_CURSOR)); 
    } 
    public void mouseExited (MouseEvent e) 
    { 
     setCursor (new Cursor(Cursor.DEFAULT_CURSOR)); 
    } 
    public void mousePressed (MouseEvent e) 
    { 
    } 
    public void mouseReleased (MouseEvent e) 
    { 
    } 

    public static void main (String[] args) { 
    sample s = new sample(); 
    s.setVisible (true); 
    s.setBounds (0,0,200,200); 
} 
} 

我的目标是当用户将鼠标悬停B2光标变为手形光标,但事实并非如此。 我错过了什么?

+0

*“因为我以前的帖子是一个烂摊子,我决定ŧ o转贴“*不要那么做!相反*编辑*原始帖子。 –

+0

@AndrewThompson我已经删除它,虽然 – user3026693

+0

嗯,希望倒票会提醒你今后不要这样做。与你之前在你编辑之前的陈述形成对比的是,*是一个答案,即使它不是特别相关。评论中还有一些有用的建议。你可以选择删除一个问题,但你也可以选择**恢复它。** –

回答

3

你的下一个问题:

您将光标设为sample实例(JFrame),不JButton,对按钮的变化setCursor (new Cursor (Cursor.HAND_CURSOR));设置光标((JComponent)e.getSource()).setCursor (new Cursor (Cursor.HAND_CURSOR));

还为目的,您不需要使用MouseListener你可以使用:

b1.setCursor(new Cursor (Cursor.HAND_CURSOR));

+0

谢谢你的支持! 我是GUI新手,非常感谢您的帮助!谢谢! – user3026693

+0

我可以问,为什么它是'JButton',而不是确切的按钮本身?这是因为这样更容易吗?你不必一遍又一遍地分配每个按钮? :) – user3026693

+0

我无法捕捉到你的想法=(。你想设置这个光标,默认为所有的按钮吗? – alex2410