hallo,
ich hab ein problem, bei dem ich im moment nicht mehr so recht weiter weiß.
hab ein JPanel, welches JList componenten darstellt. für die JLists hab ich einen eigenen
renderer geschrieben (class ActivityCellRenderer extends DefaultListCellRenderer), welcher
auch gesetzt wird.
soweit so gut, eigentlich ... das problem ist nun, daß mein panel in einem framework eingebettet
ist und das framework bestimmte standards einstellt, wie z.b. schriftart, größe, hintergrund und
vordergrund von z.b. JList.
und genau das ist mein problem: ich setz den vordergrund z.b. ROT, doch scheinbar wird durch
das framework die vordergrundfarbe wieder überschrieben. nehm ich meine komponente aus
dem framework raus und lasse sie separat in einer testumgebung laufen, bekomm ich auch
meine rote farbe.
gibts irgend eine möglichkeit, zu verhindern, daß mein renderer überschrieben wird? hab schon
versucht den renderer oder die JList final zu deklarieren, aber das nutzt nichts.
die einzige idee, die ich noch hätte, wäre JList selbst erst mal abzuleiten und dann mit der eigenen
Liste zu arbeiten und da evtl cell renderer final zu machen oder sowas in der art, aber keine ahnung
ob das überhaupt geht und nicht daß die List dann auch wieder vom framework überschrieben wird?
für tips wäre ich sehr dankbar ...
gruß tom
ich hab ein problem, bei dem ich im moment nicht mehr so recht weiter weiß.
hab ein JPanel, welches JList componenten darstellt. für die JLists hab ich einen eigenen
renderer geschrieben (class ActivityCellRenderer extends DefaultListCellRenderer), welcher
auch gesetzt wird.
Code:
class ActivityCellRenderer extends DefaultListCellRenderer {
/* This is the only method defined by ListCellRenderer. We just
* reconfigure the Jlabel each time we're called.
*/
private IResourceBundle resourceBundle =
CalendarModuleResourceBundleHolder.getResourceBundleForClass (ActivityListPanel.class);
public Component getListCellRendererComponent(
JList list,
Object value, // value to display
int index, // cell index
boolean iss, // is the cell selected
boolean chf) // the list and the cell have the focus
{
/* The DefaultListCellRenderer class will take care of
* the JLabels text property, it's foreground and background
* colors, and so on.
*/
super.getListCellRendererComponent(list, value, index, iss, chf);
// set foreground, background and text
Activity act = (Activity) value;
if (act != null) {
SimpleDateFormat sdf = new SimpleDateFormat (resourceBundle.getLabel ("ACTIVITYLIST.DATEFORMAT"));
ImmutableDateRange idr = act.getBaseDateRange ();
String strDate = sdf.format (idr.getStartTime ());
Calendar calToday = Calendar.getInstance ();
calToday.setTime (GUIHandler.getCalendarModuleController ().getCurrentDate ());
calToday.set (Calendar.HOUR_OF_DAY, 0);
calToday.set (Calendar.MINUTE, 0);
calToday.set (Calendar.SECOND, 0);
calToday.set (Calendar.MILLISECOND, 0);
Calendar calActivity = Calendar.getInstance ();
calActivity.setTime (idr.getStartTime ());
calActivity.set (Calendar.HOUR_OF_DAY, 0);
calActivity.set (Calendar.MINUTE, 0);
calActivity.set (Calendar.SECOND, 0);
calActivity.set (Calendar.MILLISECOND, 0);
if (calActivity.getTimeInMillis () < calToday.getTimeInMillis ()) {
setForeground (Color.RED);
setBackground (Color.ORANGE);
setOpaque (true);
}
else {
setForeground (list.getForeground ());
setBackground (list.getBackground ());
setOpaque (true);
}
setText (strDate + ": " + act.getDescription ());
}
return this;
}
}
soweit so gut, eigentlich ... das problem ist nun, daß mein panel in einem framework eingebettet
ist und das framework bestimmte standards einstellt, wie z.b. schriftart, größe, hintergrund und
vordergrund von z.b. JList.
und genau das ist mein problem: ich setz den vordergrund z.b. ROT, doch scheinbar wird durch
das framework die vordergrundfarbe wieder überschrieben. nehm ich meine komponente aus
dem framework raus und lasse sie separat in einer testumgebung laufen, bekomm ich auch
meine rote farbe.
gibts irgend eine möglichkeit, zu verhindern, daß mein renderer überschrieben wird? hab schon
versucht den renderer oder die JList final zu deklarieren, aber das nutzt nichts.
die einzige idee, die ich noch hätte, wäre JList selbst erst mal abzuleiten und dann mit der eigenen
Liste zu arbeiten und da evtl cell renderer final zu machen oder sowas in der art, aber keine ahnung
ob das überhaupt geht und nicht daß die List dann auch wieder vom framework überschrieben wird?
für tips wäre ich sehr dankbar ...
gruß tom