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
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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