2013-05-05 24 views
0

這是我的按鈕Code onclick我希望我的程序等待用戶單擊一個JPanel,並且當用戶單擊JPanel時,它應該在控制檯上打印它的名稱。修改addMouseListener()

此按鈕的代碼沒有顯示輸出

JPopupMenu popupMenu_1 = new JPopupMenu(); 

    JMenuItem mntmOneToOne = new JMenuItem("One to One"); 




mntmOneToOne.setIcon(new ImageIcon("C:\\Users\\Ashad\\Desktop\\oneToone.png")); 
popupMenu_1.add(mntmOneToOne); 

OneToOne.addMouseListener(new MouseAdapter() 
{ 
    @Override 
    public void mouseClicked(MouseEvent arg0) 
    { 
     MouseListener Listen= new MouseAdapter() 
     { 
      public void mousePressed(MouseEvent me) 
      { 
       String name=new String(); 
       JPanel panel = (JPanel) me.getSource(); 

       // name = panel.getName(); 

       System.out.println(panel.getName()); 
      } 
     }; 
    } 

}); 
+1

爲更好地幫助更快張貼[SSCCE(http://sscce.org/),短,可運行,編譯, – mKorbel 2013-05-05 21:00:10

回答

2

爲更好地幫助越早張貼SSCCE,短, 可運行,編譯,

因爲在我SSCCE作品,以及回答

這是我的按鈕Code onclick i want m y程序等待用戶 單擊一個JPanel,並且當用戶單擊JPanel時,它應該在控制檯上打印其名稱 。

問題必須在你的代碼的其餘部分,

enter image description here

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.GridLayout; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.LineBorder; 

public class MyGridLayout { 

    public MyGridLayout() { 
     JPanel bPanel = new JPanel(); 
     bPanel.setLayout(new GridLayout(10, 10, 2, 2)); 
     for (int row = 0; row < 10; row++) { 
      for (int col = 0; col < 10; col++) { 
       JPanel b = new JPanel() { 
        private static final long serialVersionUID = 1L; 

        @Override 
        public Dimension getPreferredSize() { 
         return new Dimension(20, 20); 
        } 
       }; 
       b.putClientProperty("column", row); 
       b.putClientProperty("row", col); 
       b.addMouseListener(new MouseAdapter() { 
        @Override 
        public void mouseClicked(MouseEvent e) { 
         JPanel btn = (JPanel) e.getSource(); 
         System.out.println("clicked column " + btn.getClientProperty("column") 
           + ", row " + btn.getClientProperty("row")); 
        } 
       }); 
       b.setBorder(new LineBorder(Color.blue, 1)); 
       bPanel.add(b); 
      } 
     } 
     JFrame frame = new JFrame("PutClientProperty Demo"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(bPanel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       MyGridLayout myGridLayout = new MyGridLayout(); 
      } 
     }); 
    } 
} 
1

你在你的MouseListener的mouseClicked方法,它只是坐在那裏,並不會完全沒有什麼,因爲它沒有被做聲明的MouseAdapter 。如果你想添加的MouseListener到面板請執行以下操作:

panel.addMouseListener(new MouseAdapter() { 
    @Override 
    public void mouseClicked(MouseEvent arg0) { 
     JPanel panel = (JPanel) arg0.getSource(); 
     System.out.println(panel.getName()); 
    } 
});