JLabel im Listener färben

  • Themenstarter Themenstarter ash34
  • Beginndatum Beginndatum
A

ash34

Gast
Hallo,

sorry, aber ich habe eine Antwort über die SuFu wirklich nicht gefunden.

Also, ich erstelle ein JLabel und kann ihm via

Java:
label.setForeground(Color.WHITE)

auch ohne Probleme die Farbe weiß zuordnen. Was ich aber nicht kann, ist die Farbe beim draufklicken zu verändern...

Zur Info: Das Label liegt auf einem JPanel in einem JFrame. Am JPanel hängt ein MouseListener. Über diesen Listener und die Koordinaten des JPanels kann ich das JLabel problemlos identifizieren. Nur kann ich die Farbe durch einen erneuten aufruf von

Java:
label.setForeground(Color.YELLOW)

nicht gelb färben. Hat jemand einen Lösungsansatz? ???:L

Danke
 
Der MouseListener sollte am JLabel registriert sein. Wird die eine Zeile überhaupt ausgeführt? KSKB?

Ausgeführt wird alles. Wenn ich mir über die Standardausgabe die Farbe vor setForeground(..) ausgeben lasse erhalte ich erwartungsgemäß den Code für weiß, nach setForeground(..) erhalte ich den Code für gelb..

Ich denke also, dass die Änderung durchaus übernommen, aber nicht gezeichnet wird..
 
KSKB (welches jedoch erwartungsgemäß funktioniert):
Java:
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class JLabelForeground {
	public static void main(final String... args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				final JFrame f = new JFrame();
				f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				final JLabel l = new JLabel("Lorem ipsum");
				l.setForeground(Color.WHITE);
				l.addMouseListener(new MouseAdapter() {
					@Override
					public void mouseClicked(MouseEvent e) {
						l.setForeground(Color.YELLOW);
					}
				});
				f.add(l);
				f.pack();
				f.setLocationRelativeTo(null);
				f.setVisible(true);
			}
		});
	}
}
Jetzt bist du dran mit einem nicht funktionierenden. 😉
 
Das mit dem Codebeispiel ist ein bisschen schwierig, weil meine Klassen relativ groß sind 😉

Was aber bei mir anders ist, ist das der Listener nicht am JLabel hängt, sondern am JPanel, auf dem das JLabel platziert ist. Könnte es daran liegen? (Ändern der Größe etc funktioniert einwandfrei. Auch Positionsänderungen werden umgesetzt)...

Aber weil du es so wolltest: 🙂

Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;

import javax.swing.JLabel;
import javax.swing.border.LineBorder;

/**
 * 
 * @author florian	
 * 
 */

public class Box extends JLabel {
	
	private static final long serialVersionUID = -2804169159814223929L;
    private int width, height;
    private String title;
    private String data; // modifiable text (like 192.168.2.1...)
      
      /**
       * Constructor
       * @param width
       * @param height
       * @param x
       * @param y
       */
      
    public Box(int width, int height, int x, int y, String title, String data, Color color) {
    	
          this.width = width;
          this.height = height;
          this.title = title;
          this.data = data;
          this.setSize(new Dimension(width, height));
          this.setLocation(new Point(x,y));
          this.setPreferredSize(new Dimension(width,height));
          this.setFont(new Font("Dialog", 0, 10));
          this.setForeground(color);
          this.setBorder(new LineBorder(Color.BLACK, 100));
      }
     
     public int toBit(int width){
    	 int bit = 0;
    	 
    		switch(width){
			
			case 91: bit = 4; break;
			
			case 136: bit = 8; break;
			
			case 204: bit = 16; break;
			
			case 255: bit = 24; break;
			
			case 306: bit = 32; break;
			
			case 382: bit = 48; break;
			}		
    	return bit;
     }
      
//     public Rectangle getBounds() {
//          return bounds;
//      }
//     
//     public void setBounds(Rectangle r){
//    	 this.bounds = r;
//     }
     
     public String getData(){
   	  return this.data;
     }
      
     public void setData(String str){
    	  this.data = str;
      }
     
     public void paintComponent(Graphics g) {
    	
         Graphics2D g2 = (Graphics2D)g.create();
          if(data == null) data = "";
       
          g2.setColor(Color.BLACK);
          g2.drawRect((int)this.getLocation().getX(), (int)this.getLocation().getY(), width, height);
          g2.setColor(Color.WHITE);
          g2.fillRect((int)this.getLocation().getX(), (int)this.getLocation().getY(), width, height);
          g.setFont(this.getFont());
          g.drawString(title, (int)this.getLocation().getX()+2, (int)this.getLocation().getY()+11);
          g.drawString(data, (int)this.getLocation().getX()+8, (int)this.getLocation().getY()+33);
          g2.dispose();
  }
}

Java:
import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JPanel;

/**
 * 
 * BoxPanel contains all boxes that can be set out of the upper list of boxes in the frame
 * @author florian
 *
 */

public class BoxPanel extends JPanel{

	private static final long serialVersionUID = 1L;
	
		protected GUI gui;
		
		private List<Box> boxList;
	    private Color color;
	    
	    private final int standardWidth;
	    private final int standardHeight;
	    private final int fourBitWidth;
	    private final int eightBitWidth;
	    private final int sixteenBitWidth;
	    private final int twentyfourBitWidth;
	    private final int thirtytwoBitWidth;
	    private final int fourtyeightBitWidth;
        
	        /**
	         * Constructor
	         * 
	         */
	        
	public BoxPanel(GUI gui) {
		
		this.gui = gui;

	    boxList = new ArrayList<Box>();
	    
	    standardWidth = (int) gui.frameDim.getWidth()/15;
	    standardHeight = (int) gui.frameDim.getHeight()/19;
	    fourBitWidth = standardWidth;
	    eightBitWidth = (int) (fourBitWidth*1.5);
	    sixteenBitWidth = (int) (eightBitWidth*1.5);
	    twentyfourBitWidth = (int) ((sixteenBitWidth + eightBitWidth)*0.75);
	    thirtytwoBitWidth = (int) (sixteenBitWidth*1.5);
	    fourtyeightBitWidth = (int) ((thirtytwoBitWidth + sixteenBitWidth)*0.75);

	}
	               
	public void fillBoxPanel(){
	    	
		String[] boxText = {"Checksum","Code","Data","HdrLen","Hdr Checksum",
							"FOS","Identifier","Total Length",
							"Length/Type","Options","Pad","Packet ID",
							"Protocol","Präambel","SeqNumr",
							"SourAddr(Eth)","SourAddr(IP)","TarAddr(Eth)",
							"TarAddr(IP)","TOS","TTL","Type","Vers"};
		
	    	
		int n = 0;						// horizontal gap between boxes
		int m = 40; 					// vertical gap between boxes
		int rowCount = 12; 				// amount of boxes in one row 
		int x = 45;						// vertical gap for the first box (related to (0,0))
		int y = 5;						// horizontal gap for the first box (related to (0,0))
		int width = standardWidth;		// width of a normal box
		int height = standardHeight;	// height of a normal box
		this.color = Color.WHITE;		// color of a normal box

//		creating boxes, setting color and text to each of the boxes
	    		
		for(int i=0; i<boxText.length; i++){
	    			
			if(i < rowCount){					
				Box box = new Box(width, height, x+n, y, boxText[i], null, color);
				this.boxList.add(box);
				n = width*(i+1)+(i+1)*4;
	   			}
	    			
			if(i == rowCount){
	    		n=0;
	    		Box box = new Box(width, height, x+n, y+m, boxText[i], null, color);
	    		this.boxList.add(box);
	    		n = width*(i-11)+(i)*4;
	    		}
	    			
	    	if(i > rowCount){
	    		Box box = new Box(width, height, x+n, y+m, boxText[i], null, color);
	    		this.boxList.add(box);
	    		n = width*(i-11)+(i)*4;
	    		}
	    }
	}
	
	public int getStandardHeight(){
		return this.standardHeight;
	}
	        
	public List<Box> getBoxList(){
	  	return this.boxList;
	}
	
	public int getFourBitWidth(){
		return this.fourBitWidth;
	}
	
	public int getEightBitWidth(){
		return this.eightBitWidth;
	}
	
	public int getSixteenBitWidth(){
		return this.sixteenBitWidth;
	}
	
	public int getTwentyFourBitWidth(){
		return this.twentyfourBitWidth;
	}
	
	public int getThirtytwoBitWidth(){
		return this.thirtytwoBitWidth;
	}
	
	public int getFourtyeightBitWidth(){
		return this.fourtyeightBitWidth;
	}
	        
	public void paintComponent(Graphics g) {
	   super.paintComponent(g);
	    for (Box box: boxList)
	    	box.paintComponent(g);
	}
}

Java:
import java.awt.Color;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.List;

/*
 * Mouselistener belonging to the BoxPanel 
 * responsible for selecting a box out of the Panel and set its color yellow 
 */

public class BoxListener implements MouseListener {
	
	private GUI gui;
	private GridListener gridListener;
	private int newChosenBox;
	private int oldChosenBox;
	
	public BoxListener(GUI gui){
		
		this.gui = gui;
		newChosenBox = -1;
		
	}

	@Override
	public void mouseClicked(MouseEvent arg0) {
		
		oldChosenBox = newChosenBox;
		
		this.gridListener = gui.getGridListener();
		
		BoxPanel boxPanel = gui.getBoxPanel();
		List<Box> boxList = boxPanel.getBoxList();
		
		GridPanel gridPanel = gui.getGridPanel();
		List<Box> gridList = gridPanel.getGridList();
		
		for(int i=0; i<gridList.size(); i++){
			if(gridList.get(i).getForeground().equals(Color.YELLOW)){
				gridList.get(i).setForeground(Color.WHITE);
				gridListener.confirmBox(gridList.get(i));
				gridListener.resetToolbar();
			}	
		}
								
		for(int i=0; i<boxList.size(); i++){
			Point clickPoint = arg0.getPoint();
			Box box = boxList.get(i);
			if (contains(box,clickPoint)){
				newChosenBox = i;
			}
		}

		if(newChosenBox != -1){
			if(newChosenBox == oldChosenBox){
				if(boxList.get(newChosenBox).getForeground().equals(Color.YELLOW))
					boxList.get(newChosenBox).setForeground(Color.WHITE);
				else{
					boxList.get(newChosenBox).setForeground(Color.YELLOW);}
			}else{
				boxList.get(newChosenBox).setForeground(Color.YELLOW);
				System.out.println(boxList.get(newChosenBox).getForeground());
				boxList.get(newChosenBox).repaint();
				if(oldChosenBox != -1)
					boxList.get(oldChosenBox).setForeground(Color.WHITE);
				}
			}	
		boxPanel.repaint();
	}
	
	private boolean contains(Box box, Point clickPoint){
		boolean hit = false;
		
			if(clickPoint.getX() >= box.getX() && clickPoint.getX() <= box.getX()+box.getWidth())
				if(clickPoint.getY() >= box.getY() && clickPoint.getY() <= box.getY()+box.getWidth()){
					hit = true;
				}
			
		return hit;
	}

	@Override
	public void mouseEntered(MouseEvent arg0) {}
	@Override
	public void mouseExited(MouseEvent arg0) {}
	@Override
	public void mousePressed(MouseEvent arg0) {}
	@Override
	public void mouseReleased(MouseEvent arg0) {}
	
	public int getChosenBox(){
		if(newChosenBox != -1){
			if(gui.getBoxPanel().getBoxList().get(newChosenBox).getForeground().equals(Color.YELLOW))
				return this.newChosenBox;
		}
		
		return -1;
	}	
}

Das Problem tritt im BoxListener auf..Zeile 62..dort änder ich die Farbe, aber es wird nicht übernommen...

EDIT: Also ich merke gerade, dass sich die Labels auch in der Größe nicht neu zeichnen, obwohl die Größe mit setSize() erfolgreich neu gesetzt wurde..
 
Zuletzt bearbeitet von einem Moderator:
Hier nochmal ein kleines Codebeispiel, was das Problem verdeutlicht. Label1 sollte nach einem Klick eigentlich rot werden...

Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;


public class TestClass {

	JLabel label;
	JLabel label2;
	
	public TestClass(){
		label = new JLabel();
		label2 = new JLabel();
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		TestClass test = new TestClass();
		test.doIt();
	
	}
	
	private void doIt(){
		BorderLayout border = new BorderLayout();
		JFrame frame = new JFrame();
		frame.setLayout(border);
		JPanel panel = new JPanel();

		label.setText("label1");
		label.setForeground(Color.WHITE);
		label2.setText("label2");
		label2.setForeground(Color.BLUE);
		panel.add(label);
		panel.add(label2);
		
		panel.addMouseListener(new MouseListener() {
			TestClass test = new TestClass();
			@Override
			public void mouseReleased(MouseEvent e) {}
			
			@Override
			public void mousePressed(MouseEvent e) {}
			
			@Override
			public void mouseExited(MouseEvent e) {}
			
			@Override
			public void mouseEntered(MouseEvent e) {}
			
			@Override
			public void mouseClicked(MouseEvent e) {
				test.getLabel().setForeground(Color.RED);
				
			}
		});
		
		frame.add(panel, BorderLayout.CENTER);
		frame.setMinimumSize(new Dimension(200,300));
		frame.setVisible(true);
		frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}
	
	public JLabel getLabel(){
		return this.label;
	}
}
 
In deinem ersten Codebeispiel (in der Tat ein wenig lang) wird
Code:
BoxListener
nirgendwo verwendet, daher lässt sich darüber nichts sagen.
In deinem zweiten Beispiel ist der Fehler klar zu sehen.
Im MouseListener erstellst du eine neue
Code:
TestClass
-Instanz …
[JAVA=47] TestClass test = new TestClass();[/code]
… und änderst die Farbe des Labels dieser neuen Instanz …
[JAVA=62] test.getLabel().setForeground(Color.RED);[/code]
… was sich natürlich nicht auf deine eigentliche
Code:
TestClass
-Instanz auswirkt.

Streich Zeile 47 und ändere Zeile 62 in …
[JAVA=62] getLabel().setForeground(Color.RED);[/code]
… oder …
[JAVA=62] TestClass.this.getLabel().setForeground(Color.RED);[/code]
… was wohl Geschmackssache ist.
 
Ohps..in dem Fall hast du natürlich recht 😉

Aber bei meinen Listener übergebe ich eigentlich alles im Konstruktor. Vielleicht der Vollständigkeit halber nochmal die Klasse GUI:

Java:
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.List;

/**
 * 
 * @author florian
 *
 * class which creates the frame with all buttons, textfields and panels
 * 
 */

public class GUI{
	
	static final int Hgap = 30;
	static final int textFieldSize = 30;
	final Dimension frameDim;
	final JFrame frame;
	
	private static BoxPanel boxPanel;
	private static GridPanel gridPanel;
	
	private static BoxListener boxListener;
	private static GridListener gridListener;
	
	private Container contentContainer;
	private JTextField textField;
	private JButton	checkButton; 
	private JButton exitButton;
	
	private JRadioButton four;
	private JRadioButton eight;
	private JRadioButton sixteen;
	private JRadioButton twenty4;
	private JRadioButton thirty2;
	private JRadioButton fourty8;
	
	
	public GUI(){
		
		Dimension dim = new Dimension(Toolkit.getDefaultToolkit().getScreenSize());
		dim.setSize(dim.getWidth(), dim.getHeight() - 75);
		frameDim = dim;
		
		this.frame = new JFrame();

	}
	
	public static void main(String [] args){
	
		GUI gui = new GUI();
		
		GUI.boxPanel = new BoxPanel(gui);
		GUI.gridPanel = new GridPanel(gui);
		
		boxListener = new BoxListener(gui);
		gridListener = new GridListener(gui);
		
		gui.initializeGridPanel(gridPanel);
		gui.initializeBoxPanel(GUI.boxPanel);
		gui.createInputPanel();
		gui.paintFrame(GUI.boxPanel,GUI.gridPanel);
		
	}
	
	/*
	 * method to set the three inital starBoxes
	 */
	
	private void initializeGridPanel(GridPanel gridPanel){
		
		
		gridPanel.setStarBox(gridPanel.getFourBitWidth()/2, gridPanel.getStandardHeight(), 45, 140);
		gridPanel.setStarBox(gridPanel.getFourBitWidth()/2, gridPanel.getStandardHeight(), 45, 140+gridPanel.getStandardHeight()*2+10);
		gridPanel.setStarBox(gridPanel.getFourBitWidth()/2, gridPanel.getStandardHeight(), 45, 140+gridPanel.getStandardHeight()+5);
		gridPanel.addMouseListener(gridListener);
		
	}

	/*
	 * method to set the size of the BoxPanel and to fill it
	 */
	
	private void initializeBoxPanel(BoxPanel boxPanel){
		
		boxPanel.setPreferredSize(new Dimension((int)frameDim.getWidth(), (int)frameDim.getHeight()/8));
		boxPanel.fillBoxPanel();
		boxPanel.addMouseListener(boxListener);
		
	}
	
	/*
	 * method to fill the contentContainer and initialize all buttons
	 */
	
	private void createInputPanel(){
		
		FlowLayout flow = new FlowLayout();
		flow.setAlignment(FlowLayout.CENTER);
		flow.setHgap(GUI.Hgap);
		
		this.contentContainer = new Container(); // contains all buttons and the textfield
		this.contentContainer.setLayout(flow);
		
		this.textField = new JTextField();
		this.textField.setColumns(textFieldSize);
		this.textField.setText("INPUT");
		this.textField.setEditable(false);
				
//		initialize the checkButton
		
		this.checkButton = new JButton("CHECK");
		this.checkButton.setEnabled(false);
		this.checkButton.setName("check");
		
//		initialize the exitButton
		
		this.exitButton = new JButton("EXIT");
		this.exitButton.setEnabled(true);
		this.exitButton.setName("exit");
		
//		adding the ActionListener and KeyListener to each button
		
		this.exitButton.addActionListener(new ExitListener());
		this.exitButton.addKeyListener(new MyExitKeyListener());
		this.checkButton.addActionListener(new CheckListener());
		this.checkButton.addKeyListener(new MyCheckKeyListener());
		
//		initialize the radioButtons
		
		this.four = new JRadioButton("4");
		this.eight = new JRadioButton("8");
		this.sixteen = new JRadioButton("16");
		this.twenty4 = new JRadioButton("24");
		this.thirty2 = new JRadioButton("32");
		this.fourty8 = new JRadioButton("48");
		
		ButtonGroup radioGroup = new ButtonGroup();
		radioGroup.add(four);
		radioGroup.add(eight);
		radioGroup.add(sixteen);
		radioGroup.add(twenty4);
		radioGroup.add(thirty2);
		radioGroup.add(fourty8);
		
		this.four.setEnabled(false);
		this.eight.setEnabled(false);
		this.sixteen.setEnabled(false);
		this.twenty4.setEnabled(false);
		this.thirty2.setEnabled(false);
		this.fourty8.setEnabled(false);
		
//		fill the contentContainer
		
		contentContainer.add(textField);
		contentContainer.add(four);
		contentContainer.add(eight);
		contentContainer.add(sixteen);
		contentContainer.add(twenty4);
		contentContainer.add(thirty2);
		contentContainer.add(fourty8);
		contentContainer.add(checkButton);
		contentContainer.add(exitButton);
		
//		contentContainer.setSize(new Dimension((int) frameDim.getWidth(), (int) frameDim.getHeight()/10));
	}
	
	/**
	 * method to paint the frame
	 */
	
	private void paintFrame(BoxPanel boxPanel, JPanel gridPanel){
		 
		BorderLayout border = new BorderLayout();
		JScrollPane scrollbar = new JScrollPane(gridPanel);
		scrollbar.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		
		frame.setLayout(border);
		
		frame.add(boxPanel, BorderLayout.NORTH);
		frame.add(scrollbar, BorderLayout.CENTER);
		frame.add(contentContainer, BorderLayout.SOUTH);
		
		
		frame.setTitle("Echo Request Puzzle");
		frame.setSize(frameDim);		
		
		
		frame.setVisible(true);
		frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
		
		frame.addWindowListener(new MyWindowListener());
	}
	
	public Color getFrameColor(){
		return frame.getContentPane().getBackground();
	}
	
	public List<JRadioButton> getRadioButtons(){
		
		ArrayList<JRadioButton> list = new ArrayList<JRadioButton>();
		list.add(four);
		list.add(eight);
		list.add(sixteen);
		list.add(twenty4);
		list.add(thirty2);
		list.add(fourty8);
		
		return list;
	}
	
	public List<JButton> getButtons(){
		ArrayList<JButton> list = new ArrayList<JButton>();
		
		list.add(checkButton);
		list.add(exitButton);
		
		return list;
	}
	
	public BoxPanel getBoxPanel(){
		return GUI.boxPanel;
	}
	
	public GridPanel getGridPanel(){
		return GUI.gridPanel;
	}
	
	public JTextField getInputField(){
		return this.textField;
	}
	
	public BoxListener getBoxListener(){
		return GUI.boxListener;
	}
	
	public GridListener getGridListener(){
		return GUI.gridListener;
	}
}

In dieser Klasse wird das Fenster erstellt. Jeder Listener bekommt im Konstruktor dann das gleiche GUI Element übergeben.
Um eine Komponente neu zu zeichnen, muss ich doch
Code:
repaint()
auf die Komponente aufrufen, oder?

EDIT: Besonders wichtig sind hier vielleicht die Zeilen 63 bis 78 (die main)

noch ein EDIT:

Also nach klicken auf einer Box, ergibt sogar die Abfrage
Code:
getForeground().equals(Color.YELLOW)
in der Klasse BoxListener (Zeile 57) true...
Also wird das wirklich alles übernommen, nur nicht gezeichnet, oder irre ich mich?
 
Zuletzt bearbeitet von einem Moderator:
Bitte wirf diese Box-Klasse in den Müll. Alles was du damit machst, geht mit einem normalen JLabel und evtl. einem Border schneller, kürzer, übersichtlicher und einfacher. Obendrein bleiben dir solche Fehler erspart. Das is ein typischer Fall von Komposition > Vererbung.
 
Bitte wirf diese Box-Klasse in den Müll. Alles was du damit machst, geht mit einem normalen JLabel und evtl. einem Border schneller, kürzer, übersichtlicher und einfacher.

Ok..ich vertraue dir jetzt einfach mal 😉 Ich habe die Klasse jetzt nicht mehr in Benutzung. Das ändert aber an meinem Problem leider nichts... :bahnhof:
 
Zuletzt bearbeitet von einem Moderator:
Problem gelöst:

Bei jedem Aufruf der
Code:
getComponent
der jeweiligen JLabels muss die Farbe mit
Code:
label.getForeground
neu gesetzte werden. Anschlißend muss das gesamte Fenster über
Code:
frame.repaint()
neu gezeichnet werden.

Vielen Dank an alle :toll:

(insbesondere an die, die mich auf die Verworrenheit meines Codes aufmerksam gemacht haben)
 
Das funktioniert so.
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
 
public class TestClassAsh {
 
    JLabel label;
    JLabel label2;
    
    public TestClassAsh(){
        label = new JLabel();
        label2 = new JLabel();
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        
        TestClassAsh test = new TestClassAsh();
        test.doIt();
    
    }
    
    private void doIt(){
        BorderLayout border = new BorderLayout();
        JFrame frame = new JFrame();
        frame.setLayout(border);
        JPanel panel = new JPanel();
 
        label.setText("label1");
        label.setForeground(Color.WHITE);
        label2.setText("label2");
        label2.setForeground(Color.BLUE);
        panel.add(label);
        panel.add(label2);
        
        panel.addMouseListener(new MouseListener() {
            @Override
            public void mouseReleased(MouseEvent e) {}
            
            @Override
            public void mousePressed(MouseEvent e) {}
            
            @Override
            public void mouseExited(MouseEvent e) {}
            
            @Override
            public void mouseEntered(MouseEvent e) {}
            
            @Override
            public void mouseClicked(MouseEvent e) {
                label.setForeground(Color.RED);
            }
        });
        
        frame.add(panel, BorderLayout.CENTER);
        frame.setMinimumSize(new Dimension(200,300));
        frame.setVisible(true);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}
 

Neue Themen


Zurück
Oben