/******************************************************************************* * Copyright (c) 2012 Google, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Google, Inc. - initial API and implementation *******************************************************************************/ package swing.samples; import java.awt.Component; import java.util.Locale; import javax.swing.DefaultListCellRenderer; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JScrollPane; public class JListRendererDemo { public static void main(String[] args) { JFrame frame = new JFrame("JList Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); DataItem[] items = { new DataItem("EN 1", "DE 1"), new DataItem("EN 2", "DE 2"), new DataItem("EN 3", "DE 3"), new DataItem("EN 4", "DE 4") }; JList list = new JList(items); list.setName("JList1"); list.setCellRenderer(new JListCellRenderer(Locale.ENGLISH)); //list.setCellRenderer(new JListCellRenderer(Locale.GERMAN)); frame.add(new JScrollPane(list)); frame.pack(); frame.setVisible(true); } /** * Renderer for JList */ private static class JListCellRenderer extends DefaultListCellRenderer { private Locale userLocale; public JListCellRenderer(Locale userLocale) { this.userLocale = userLocale; } @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JLabel renderer = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if(value != null) { DataItem dataItem = (DataItem) value; if(userLocale.equals(Locale.ENGLISH)) { renderer.setText(dataItem.getNameEN()); } else if(userLocale.equals(Locale.GERMAN)) { renderer.setText(dataItem.getNameDE()); } } return renderer; } } /** * Item to show in JList */ private static class DataItem { private String nameEN; private String nameDE; public DataItem(String nameEN, String nameDE) { this.nameEN = nameEN; this.nameDE = nameDE; } public String getNameEN() { return nameEN; } public String getNameDE() { return nameDE; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("DataItem [nameEN="); builder.append(nameEN); builder.append(", nameDE="); builder.append(nameDE); builder.append("]"); return builder.toString(); } } }