MouseListener dla JLabel

0

Mam taki kod:

label = new JLabel("Original title:");
				label.setBounds(260, 30, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				panelHome.add(label);
				
				label = new JLabel(listMovie.get(movieID).getOriginalTitle());
				label.setBounds(410, 30, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				label.setForeground(Color.WHITE);
				panelHome.add(label);

				label = new JLabel("Title:");
				label.setBounds(260, 70, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				panelHome.add(label);
				
				label = new JLabel(listMovie.get(movieID).getTitle());
				label.setBounds(410, 70, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				label.setForeground(Color.WHITE);
				panelHome.add(label);
				
				label = new JLabel("Director:");
				label.setBounds(260, 110, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				panelHome.add(label);
				
				label = new JLabel(listMovie.get(movieID).getDirector());
				label.setBounds(410, 110, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				label.setForeground(Color.WHITE);
				panelHome.add(label);

				label = new JLabel("Screenplay:");
				label.setBounds(260, 150, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				panelHome.add(label);
				
				label = new JLabel(listMovie.get(movieID).getScreenplay());
				label.setBounds(410, 150, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				label.setForeground(Color.WHITE);
				panelHome.add(label);

				label = new JLabel("Release date:");
				label.setBounds(260, 190, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				panelHome.add(label);
				
				label = new JLabel(listMovie.get(movieID).getReleaseDate());
				label.setBounds(410, 190, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				label.setForeground(Color.WHITE);
				panelHome.add(label);

				label = new JLabel("Genre:");
				label.setBounds(260, 230, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				panelHome.add(label);
				
				label = new JLabel(listMovie.get(movieID).getGenre());
				label.setBounds(410, 230, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				label.setForeground(Color.WHITE);
				panelHome.add(label);

				label = new JLabel("Country:");
				label.setBounds(540, 30, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				panelHome.add(label);
				
				label = new JLabel(listMovie.get(movieID).getCountry());
				label.setBounds(690, 30, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				label.setForeground(Color.WHITE);
				panelHome.add(label);
				
				label = new JLabel("Runtime:");
				label.setBounds(540, 70, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				panelHome.add(label);
				
				label = new JLabel(Integer.toString(listMovie.get(movieID).getRuntime()) + " min.");
				label.setBounds(690, 70, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				label.setForeground(Color.WHITE);
				panelHome.add(label);
				
				label = new JLabel("Budget:");
				label.setBounds(540, 110, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				panelHome.add(label);
				
				label = new JLabel(Integer.toString(listMovie.get(movieID).getBudget()) + " $");
				label.setBounds(690, 110, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				label.setForeground(Color.WHITE);
				panelHome.add(label);
				
				label = new JLabel("Box office:");
				label.setBounds(540, 150, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				panelHome.add(label);
				
				label = new JLabel(Integer.toString(listMovie.get(movieID).getBoxOffice()) + " $");
				label.setBounds(690, 150, 200, 30);
				label.setFont(new Font("SansSerif", Font.BOLD, 20));
				label.setForeground(Color.WHITE);
				panelHome.add(label);

Dla 'label' próbuję dodać MouseListener

label.addMouseListener(new MouseListener() {

					@Override
					public void mouseClicked(MouseEvent arg0) {
						// TODO Auto-generated method stub
						
					}

					@Override
					public void mouseEntered(MouseEvent arg0) {
						label.setForeground(Color.WHITE);
						
					}

					@Override
					public void mouseExited(MouseEvent arg0) {
						// TODO Auto-generated method stub
						
					}

					@Override
					public void mousePressed(MouseEvent arg0) {
						// TODO Auto-generated method stub
						
					}

					@Override
					public void mouseReleased(MouseEvent arg0) {
						// TODO Auto-generated method stub
						
					}
					
				});

aby zmienic tło na biały, ale to nie działa.

0

Zrób tak:

class BackgroundChanger extends MouseAdapter
{
    //------------------------
    public void mouseEntered(MouseEvent e)
    {
        e.getComponent().setBackground(Color.WHITE);
    }
    //------------------------
    public void mouseExited(MouseEvent e)
    {
        if(original != null)
        {
            e.getComponent().setBackground(original);
        }
    }
}

Musisz w zmiennej original zapamiętać domyślne tło dla JLabel

MyMouseListener changer= new BackgroundChanger();

i dla każdej etykiety

label.addMouseListener(changer);

1 użytkowników online, w tym zalogowanych: 0, gości: 1