2016-11-22 6 views
-1

私がJListの持っている:JListアイテム上にカーソルを置いてJLabelを表示するにはどうすればいいですか?

comandaListModel = new SortedListModel<String>(); 
    comandaListScrollPane = new JScrollPane(); 
    comandaPanel.add(comandaListScrollPane, BorderLayout.CENTER); 
    comandaList = new JList<String>(comandaListModel); 
    comandaListScrollPane.setViewportView(comandaList); 

をそして私は、カスタムのJLabelクラスを持っている:

public class QrCodeLabel extends JLabel { 

    public Image qrCode; 

    public QrCodeLabel(JList list) { 
     super(""); 
     updateQrCode(list); 

    } 

    public void updateQrCode(JList list) { 
     if (ComandaCreationFrame.getQrMatrixes() != null) { 
      this.qrCode = QRGenerator.generateImage(ComandaCreationFrame.getQrMatrixes().get(list.getSelectedValue())).getScaledInstance(this.getWidth(), this.getHeight(), Image.SCALE_SMOOTH); 
      this.setIcon(new ImageIcon(this.qrCode)); 
     } 

    } 

} 

enter image description here

のJLabelをするJListのListSelectionListenervalueChangedに更新されます。 JListの各項目の上にマウスを置いてJLabelを "ポップアップ"するにはどうすればいいですか?このような「ツールチップ」機能をJListに実装することは可能ですか? (JLabelを「表示」することで、もちろんJLabelを持つJPanelを意味することもあります)。

+2

['JToolTip'](http://docs.oracle.com/javase/8/docs/api/javax/swing/JToolTip.html) –

答えて

1

MouseAdapterを実装して、特定の操作が実行されたときにマウスが何をするかを追跡できます。

MouseAdaptorは "のmousePressed" と呼ばれる5つのMouseEventの方法、 "のmouseReleased"、"のmouseEntered"、 "のmouseExited"、および "のmouseClicked" が付属しています。 "mouseEntered"メソッドがこれに使用されます。

またこれらをインポートする必要があります。

java.awt.event.MouseAdapter; 
java.awt.event.MouseEvent; 

があなたのJListを持つクラスでコンストラクタを作成し、単にその中にこのコードを追加:のmouseEnteredメソッド内

addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseEntered(MouseEvent e) { 

     } 
    }); 

をされますupdateQrCodeメソッドを呼び出す必要があります。マウスがリストに入るたびに、JLabelが更新されます。詳細については

、このスレッドを参照してください。Java MouseListener

私はこれが助けを願っています。

関連する問題