Hallo,
ich habe zwei Probleme, für ich bis jetzt zwar Ansätze habe, aber keine wirkliche Lösung gefunden habe.
Problem 1:
Ich habe eine Liste aus Checkboxen. Dafür habe ich im WWW ein Beispiel gefunden und übernommen. Der Code ist der folgende:
[JAVA=42]package client;
import java.awt.Component;
import javax.swing.JCheckBox;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
/**
* @author
* How do add a checkbox to items in a JList? | web development helpdesk
* a-jlist
*
*/
public class CheckListItem {
private static final long serialVersionUID = 1L;
private String label;
private boolean isSelected = false;
public CheckListItem(String label) {
this.label = label;
}
public CheckListItem(String label, boolean isSelected) {
this.label = label;
this.isSelected = isSelected;
}
public boolean isSelected() {
return isSelected;
}
public void setSelected(boolean isSelected) {
this.isSelected = isSelected;
}
public String toString() {
return label;
}
}
// Handles rendering cells in the list using a check box
class CheckListRenderer extends JCheckBox implements ListCellRenderer {
private static final long serialVersionUID = 1L;
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean hasFocus) {
setEnabled(list.isEnabled());
setSelected(((CheckListItem) value).isSelected());
setFont(list.getFont());
setBackground(list.getBackground());
setForeground(list.getForeground());
setText(value.toString());
return this;
}
}
[/code]
Ein einzelner Eintrag mit einer Checkbox wird durch ein CheckListItem repräsentiert. Ich möchte jetzt zusätzlich ein einzelne CheckListItem deaktivieren können. Ich hab schon hinten und vorne mit dem CheckListRenderer rumgespielt, leider erfolglos. Hat jemand eine Idee, wie ich das Problem lösen kann?
Problem 2:
Ich lade auf ein JPanel ein JPG als Hintergrund und zwar in dem ich paintComponent dieses JPanel überschreibe. Das gewünschte Bild wird über einen JFileChooser ausgewählt. Das funktioniert auch alles, das einzige Problem ist, dass ich es nicht hinbekomme, dass das Bild direkt nach dem Schließen des JFileChoosers mit "ok" angezeigt wird. Das passiert erst, wenn ich das Fenster verändere oder ähnliches. Nach Suche im WWW habe ich versucht mit paint() die paintComponent() auszulösen, die Verzögerung bleibt aber leider. Gibt es irgendeine Möglichkeit meine paintComponent() direkt nach dem Abschließen der Bildauswahl aufzurufen?
Danke schonmal.
Gruß,
Carolin
ich habe zwei Probleme, für ich bis jetzt zwar Ansätze habe, aber keine wirkliche Lösung gefunden habe.
Problem 1:
Ich habe eine Liste aus Checkboxen. Dafür habe ich im WWW ein Beispiel gefunden und übernommen. Der Code ist der folgende:
[JAVA=42]package client;
import java.awt.Component;
import javax.swing.JCheckBox;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
/**
* @author
* How do add a checkbox to items in a JList? | web development helpdesk
* a-jlist
*
*/
public class CheckListItem {
private static final long serialVersionUID = 1L;
private String label;
private boolean isSelected = false;
public CheckListItem(String label) {
this.label = label;
}
public CheckListItem(String label, boolean isSelected) {
this.label = label;
this.isSelected = isSelected;
}
public boolean isSelected() {
return isSelected;
}
public void setSelected(boolean isSelected) {
this.isSelected = isSelected;
}
public String toString() {
return label;
}
}
// Handles rendering cells in the list using a check box
class CheckListRenderer extends JCheckBox implements ListCellRenderer {
private static final long serialVersionUID = 1L;
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean hasFocus) {
setEnabled(list.isEnabled());
setSelected(((CheckListItem) value).isSelected());
setFont(list.getFont());
setBackground(list.getBackground());
setForeground(list.getForeground());
setText(value.toString());
return this;
}
}
[/code]
Ein einzelner Eintrag mit einer Checkbox wird durch ein CheckListItem repräsentiert. Ich möchte jetzt zusätzlich ein einzelne CheckListItem deaktivieren können. Ich hab schon hinten und vorne mit dem CheckListRenderer rumgespielt, leider erfolglos. Hat jemand eine Idee, wie ich das Problem lösen kann?
Problem 2:
Ich lade auf ein JPanel ein JPG als Hintergrund und zwar in dem ich paintComponent dieses JPanel überschreibe. Das gewünschte Bild wird über einen JFileChooser ausgewählt. Das funktioniert auch alles, das einzige Problem ist, dass ich es nicht hinbekomme, dass das Bild direkt nach dem Schließen des JFileChoosers mit "ok" angezeigt wird. Das passiert erst, wenn ich das Fenster verändere oder ähnliches. Nach Suche im WWW habe ich versucht mit paint() die paintComponent() auszulösen, die Verzögerung bleibt aber leider. Gibt es irgendeine Möglichkeit meine paintComponent() direkt nach dem Abschließen der Bildauswahl aufzurufen?
Danke schonmal.
Gruß,
Carolin