21. maj 2007 - 13:01
Der er
12 kommentarer og 1 løsning
Font farve i java
Hey, Jeg sidder og bøvlet lidt med at få en string udskrevet med farver. Jeg har forsøgt lidt med java.awt.color, men kan ikke rigtig få det til at virke... I nedenstående kode er det td.getText() jeg gerne vil have ud i rød. if (Calendar.getInstance().after(td.getDeadline())) { todolist.addElement(td.getText() + " [" + formatter.format(td.getDeadline().getTime())+ "]"); } Håber der lige er en der kan hjælpe, skal bruges i dag nemlig :( På forhånd tak for hjælpen!
Annonceindlæg tema
Ja, også noget af det jeg har kigget på, men synes ikke jeg kan få det sat rigtig op.
getText() returnerer ikke teksten i nogen specifik farve, men du kan få teksten vist i rød. Er det en JList vi snakker om ?
På den måde det er nemmest. Har prøvet lidt forskelligt forgæves. Ja, ang. farven så er det eneste jeg ønsker at få vist teksten i rød.
Ok - den nemmeste måde følger her Ret din metode til nedenstående if (Calendar.getInstance().after(td.getDeadline())) { todolist.addElement(td.getText() + " [" + formatter.format(td.getDeadline().getTime())+ "]¤"); } Tilføj nedenstående CellRenderer ved: minJList.setCellRenderer(new ListRenderer()); import java.awt.Color; import java.awt.Component; import javax.swing.JList; import javax.swing.ListCellRenderer; import javax.swing.JLabel; public class ListRenderer extends JLabel implements ListCellRenderer{ public ListRenderer() { setOpaque(true); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if(value != null){ String[] s = value.toString().split("¤", 2); if(s.length > 1) setForeground(Color.RED); else setForeground(Color.BLACK); setText(s[0]); } return this; } } Så virker det.
minJList er det her hvor min td.getText() er? Hele min metode ligner: public void showToDo() { todolist.clear(); List<ToDo> l = model.getToDoList(); DateFormat formatter = DateFormat.getDateInstance(); //Meningen denne tekst skulle udskrives i rød. for (ToDo td : l) { if (Calendar.getInstance().after(td.getDeadline())) { todolist.addElement(td.getText() + " [" + formatter.format(td.getDeadline().getTime())+ "]"); } } }
Øhhh - jeg er vist ikke helt med Bruger du; java.awt.List ??? Den har ingen setCellRenderer metode, kan du ikke bruge javax.swing.JList ? Er først tilbage om en times tid.
Hej igen, Teksten fra de objekter der skulle farves røde ligger i en alm. List (java.util.List). Har oprettet den nye renderer klasse, og skal jo gerne have den ind i min anden klasse (den metode jeg postede før) Er ikke lige helt med mth. til minJList hvordan du mener med det. Er det ikke muligt noget alla: public void showToDo() { todolist.clear(); List<ToDo> l = model.getToDoList(); ListRenderer r = l.setCellRenderer(new ListRenderer()); DateFormat formatter = DateFormat.getDateInstance(); for (ToDo td : l) { if (Calendar.getInstance().after(td.getDeadline())) { todolist.addElement(r.td.getText() + " [" + formatter.format(td.getDeadline().getTime())+ "]"); } } } Ellers kan man ikke lave sådan at man opretter den List<ToDo> l jeg har bliver kopieret til en javax.swing.JList liste?
Kunne det evt. være at jeg tilføjer dem på nogenlunde den her måde: String[] data = {"tekst1", "tekst2", "tekst3", "tekst4"}; JList dataList = new JList(data); og dernæst udskriver dataListen på en eller anden måde?
Sådan havde jeg forestille mig at du mente. public class JListFrame extends javax.swing.JFrame { public JListFrame() { initComponents(); list.setCellRenderer(new ListRenderer()); } private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); list = new javax.swing.JList(); getContentPane().setLayout(new java.awt.FlowLayout()); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); list.setModel(new javax.swing.AbstractListModel() { String[] strings = { "Item 1", "Item 2¤", "Item 3", "Item 4¤", "Item 5" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); jScrollPane1.setViewportView(list); getContentPane().add(jScrollPane1); pack(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new JListFrame().setVisible(true); } }); } private javax.swing.JScrollPane jScrollPane1; private javax.swing.JList list; } import java.awt.Color; import java.awt.Component; import javax.swing.JList; import javax.swing.ListCellRenderer; import javax.swing.JLabel; public class ListRenderer extends JLabel implements ListCellRenderer{ public ListRenderer() { setOpaque(true); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if(value != null){ String[] s = value.toString().split("¤", 2); if(s.length > 1) setForeground(Color.RED); else setForeground(Color.BLACK); setText(s[0]); } return this; } }
22. august 2007 - 10:16
#12
Hej carsten, tak for hjælpen. smid er svar
22. august 2007 - 10:34
#13
Kommer her.
Kurser inden for grundlæggende programmering