代码如下,点击按钮没反应,求各位大神支招
<code>
class MouseHandle extends MouseAdapter{
public void mousePressed(MouseEvent e){
try{
JTree tree=(JTree)e.getSource();
int rowLocation=tree.getRowForLocation(e.getX(),e.getY());
TreePath treepath=tree.getPathForRow(rowLocation);
TreeNode treenode=(TreeNode)treepath.getLastPathComponent();
String nodename=treenode.toString();
if(nodename.equals("上传文件")){
//JTF.setText(nodename);
JPright.removeAll();
jb1=new JButton("上传");
Box box=Box.createVerticalBox();
//JPright.setLayout(new FlowLayout(FlowLayout.TRAILING));
box.add(new JLabel("输入需要上传的文件"));
box.add(new JTextField(10));
box.add(jb1);
box.add(box.createVerticalStrut(50));
box.add(new JLabel("目标文件名"));
box.add(new JTextField(10));
box.add(new JButton("打开文件"));
JPright.add(box);

jb1.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
Button button=(Button)e.getSource();
if(button.getLabel().equalsIgnoreCase("上传")){
JTF.setText("hello");
}
}
});
JPright.validate();

}
}catch(NullPointerException ne){}

}}
</code>

解决方案 »

  1.   

    怎么会没有反应呢?楼主触发了被监听的
    组件的相关动作没有(点击、按下)?
    实例验证下:
     package com.kiritor;import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;import javax.swing.JButton;public class MyMouseAdapter extends MouseAdapter {
    private JButton button = null; public MyMouseAdapter() {
    }
    public MyMouseAdapter(JButton button) {
    this.button = button;
    this.button.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
    System.out.println("监听器内部的按钮被点击了");
    }
    }); }}
    package com.kiritor;import java.awt.FlowLayout;
    import java.awt.event.MouseEvent;import javax.swing.JButton;
    import javax.swing.JFrame;public class MyFrame extends JFrame {

    private JButton outButton;
    private JButton innerButton;
    public MyFrame() {
    this.setSize(300, 200);
    this.setVisible(true);
    this.setLayout(new FlowLayout());
    outButton = new JButton("外部按钮");
    innerButton = new JButton("内部按钮");
    this.add(outButton);
    this.add(innerButton);
    this.setLocationRelativeTo(null);
    outButton.addMouseListener(new MyMouseAdapter(innerButton)
    {
    @Override
    public void mouseClicked(MouseEvent e) {
    System.out.println("外部按钮被点击了");
    }
    });

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

    }}
    这里点击outButton是不会答应“内部按钮被点击了”这句话的
    只有点击了innerButton才会打印这句话。
      

  2.   

    怎么会没有反应呢?楼主触发了被监听的
    组件的相关动作没有(点击、按下)?
    实例验证下:
     package com.kiritor;import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;import javax.swing.JButton;public class MyMouseAdapter extends MouseAdapter {
    private JButton button = null; public MyMouseAdapter() {
    }
    public MyMouseAdapter(JButton button) {
    this.button = button;
    this.button.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
    System.out.println("监听器内部的按钮被点击了");
    }
    }); }}
    package com.kiritor;import java.awt.FlowLayout;
    import java.awt.event.MouseEvent;import javax.swing.JButton;
    import javax.swing.JFrame;public class MyFrame extends JFrame {

    private JButton outButton;
    private JButton innerButton;
    public MyFrame() {
    this.setSize(300, 200);
    this.setVisible(true);
    this.setLayout(new FlowLayout());
    outButton = new JButton("外部按钮");
    innerButton = new JButton("内部按钮");
    this.add(outButton);
    this.add(innerButton);
    this.setLocationRelativeTo(null);
    outButton.addMouseListener(new MyMouseAdapter(innerButton)
    {
    @Override
    public void mouseClicked(MouseEvent e) {
    System.out.println("外部按钮被点击了");
    }
    });

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

    }}
    这里点击outButton是不会答应“内部按钮被点击了”这句话的
    只有点击了innerButton才会打印这句话。

    感谢你的例子给我启发
    已解决主要是在适配器事件中返回event对象的类型出错。。改成JButton就行了