GridBagLayout, Labels und MouseListener

Nevhirion

Grünschnabel
Moin,

ich habe grade vor eine Art Stundenplan zu schreiben. Das Layout steht für den Stundenplan auch soweit. Mein Problem ist es nur jetzt den ganzen Labels die die Daten fassen sollen (lblDayInfos) mit einem MouseListener zu bestücken, so dass wenn ich auf ein Label klick ich das später ändern kann. Und das mit jedem einzelnem Label. Ich würde es toll finden wenn mir jemand von euch ein tritt in die richtige Richtung geben könnte, oder Tipps bezüglich dies. Der Code steht unten wie ich das bisher habe. (Ich möchte nur Tipps, keine kompletten Lösungen).
Vielen Dank im Voraus =)

Java:
import java.awt.Color;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class TimeTameGUI extends JFrame {
	
	private static final long serialVersionUID = -3556603114088695807L;

	Container cp = getContentPane();
	GridBagConstraints gbc;
	public TimeTameGUI() {
		creatGUI();
	}
	
	public void creatGUI() {
		String[] dayNames = {"Mo","Di","Mi","Do","Fr","Sa","So"};
		String[] dayTimes = {"07:55 - 08:10", "08:10 - 08:55", "08:55 - 09:40", 
							 "09:40 - 09:55", "09:55 - 10:40", "10:40 - 11:25",
							 "11:25 - 11:40", "11:40 - 12:25", "12:25 - 13:10",
							 "13:10 - 13:30", "13:30 - 14:15", "14:15 - 15:00"};
		
		int days = 5;
		int hours = 8 + 4;
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setTitle("Muh");
		
		cp.setLayout(new GridBagLayout());
		
		JLabel lblDayNames;
		for(int iDays = 0; iDays <= days; iDays++) {
			gbc = new GridBagConstraints();
			if(iDays == 0) {
				lblDayNames = new JLabel(" ", JLabel.LEFT);
				gbc.fill = GridBagConstraints.HORIZONTAL;
			}
			else {
				lblDayNames = new JLabel(dayNames[iDays-1], JLabel.CENTER);
				gbc.fill = GridBagConstraints.BOTH;
			}
			lblDayNames.setOpaque(true);
			lblDayNames.setBackground(Color.GRAY);
			lblDayNames.setBorder(BorderFactory.createRaisedBevelBorder());
			gbc.gridx = iDays;
			gbc.weightx = 0.5;
			cp.add(lblDayNames, gbc);
		}
		
		JLabel lblDayTimes;
		for(int iTimes = 0; iTimes < hours; iTimes++) {				
			lblDayTimes = new JLabel(dayTimes[iTimes], JLabel.CENTER);
			lblDayTimes.setOpaque(true);
			lblDayTimes.setBackground(Color.GRAY);
			lblDayTimes.setBorder(BorderFactory.createRaisedBevelBorder());
			gbc = new GridBagConstraints();
			gbc.fill = GridBagConstraints.BOTH;
			if(iTimes == 0 ||iTimes == 3 ||iTimes == 6 ||iTimes == 9) {
				gbc.ipady = 0;
				gbc.weighty = 0;
			}
			else {
				gbc.ipady = 40;
				gbc.weighty = 1;
			}
			gbc.gridy = iTimes+1;
			gbc.weightx = 0.5;
			
			cp.add(lblDayTimes, gbc);
		}
		
		JLabel lblDayInfos;
		for(int iInfosHour = 0; iInfosHour < hours; iInfosHour++) {
			for(int iInfosDay = 0; iInfosDay < days; iInfosDay++) {
				lblDayInfos = new JLabel(" ");
				lblDayInfos.setBorder(BorderFactory.createLoweredBevelBorder());
				gbc = new GridBagConstraints();
				gbc.fill = GridBagConstraints.BOTH;
				gbc.gridx = iInfosDay+1;		
				if(iInfosHour == 0 ||iInfosHour == 3 ||iInfosHour == 6 ||iInfosHour == 9) {
					gbc.ipady = 0;
					gbc.weighty = 0;
				}
				else {
					gbc.ipady = 40;
					gbc.weighty = 1;
				}
				gbc.gridy = iInfosHour+1;
				gbc.weightx = 1;
				cp.add(lblDayInfos, gbc);
			}
		}
		setSize(500,500);
		setVisible(true);
	}
}
 
Zuletzt bearbeitet:
Zurück