JList com duas linhas

3 respostas
velo

Alguem sabe como fazer uma JList com + de uma linha de texto?

Tentei usando o
, mas o obvio aconteceu, não funcinou…

Marvin

3 Respostas

M

Caro Marvin,

Você deve criar um modelo para seu JList contendo a lista de itens que o mesmo possui.
Vou tentar exemplificar no trecho de código a seguir:

JList itens = new JList();
DefaultListModel modeloItens = new DefaultListModel();
modeloItens.addElement( "Item 1" );
modeloItens.addElement( "Item 2" );
modeloItens.addElement( "Item 3" );
itens.setModel( modeloItens );

Espero ter ajudado!!

velo

Eh, ±…

Tipo, se tem algum tuto ou artigo sobre modelos, eh que eu naum sei como “explicar” pro modelo que precisa quebrar linha.

brlima

tentei fazer algo aqui. Olha, utilizei um JTextArea pra exibir. :D agora com
\n funciona .. hehehehe...

/* 
 * Criado por Bruno R. Lima em 26/10/2004
 */
package com.sample;

import java.awt.Color;
import java.awt.Component;

import javax.swing.DefaultListCellRenderer;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JTextArea;

/**
 * 
 * @author Bruno Rios Lima
 */
public class JListTwoLines {

	public static void main(String[] args) {
		
		JFrame frame = new JFrame();
		JList lista = new JList(new DefaultListModel());
		lista.setCellRenderer(new MyListRenderer());
		((DefaultListModel)lista.getModel()).addElement("Item1 \nItem 1.2");
		((DefaultListModel)lista.getModel()).addElement("Item2");
		((DefaultListModel)lista.getModel()).addElement("Item3");
		frame.getContentPane().add(lista);
		frame.pack();
		frame.show();
		
	}
}
class MyListRenderer extends DefaultListCellRenderer{
	JTextArea text;
	public Component getListCellRendererComponent(
			JList lista, 
			Object valor, 
			int i, 
			boolean s, 
			boolean f )
	{
		
		JLabel label = (JLabel)super.getListCellRendererComponent(lista,valor,i,s,f);
		text = new JTextArea((String)valor);
		text.setBackground(label.getBackground());
		text.setForeground(label.getForeground());
		text.setFont(label.getFont());
		return text;
	}
	
}

flw.!

Criado 25 de outubro de 2004
Ultima resposta 26 de out. de 2004
Respostas 3
Participantes 3