Wyświetlanie długiego tekstu w tabeli

0

W jaki sposób mogę wyświetlić w tabeli tekst składający się z więcej niż jednej linii? Przypuszczam, że przez zmianę komponwntu wyświetlającego z JLabel na naprzykład JTextField. Ale nie wiem czy mam rację, zwłaszcza, że nigdzie nie spotkałem przykładu takiej tabeli. Z góry dziękuję za pomoc :)

0

hej
żeby to zrobić musisz zmienić domyślnego edytora na własny (albo jakiś ze zdefiniowanych, byłe implementowały one JAKIŚ interfejs (nie pamiętam jego nazwy :(, ale są to np. JCheckBox).
Aby komórki tabeli stały się elemetami dowolnego typu tworzysz nową klasę która implementuje TableCellRenderer:

public class MyTableCellRenderer implements TableCellRenderer{

	JTextArea label=null;
 
	public MyTableCellRenderer(){
		super();
		label=new JTextArea();
		label.setWrapStyleWord(true);
	}

	public Component getTableCellRendererComponent(	JTable table,
                                                	Object value,
                                                	boolean isSelected,
                                                	boolean hasFocus,
                                                	int	 	row,
                                                	int	 column){
		if(value!=null)
			label.setText(value.toString()+"\nA tutaj dajemy nową linię ;)...");
		return label;
	}
}

akurat ta klasa tworzy JTextArea, ale mogą być inne....
no i TextArea obsługuje wiele linii, np. jak dodasz do label znacznik \n...
oczywiście musisz to poprawić u góry (np. uwzględnić długość linii etc, ale to jest wskazówka)
i jeszcze w tabeli musisz ustawić obiekty tej klasy jako edytory wartości np. tak:
tabela=new JTable(3,3);
for(int i=0;i<tabela.getColumnCount();i++)
tabela.getColumnModel().getColumn(i).setCellRenderer(new MyTableCellRenderer());
i to powinno działać

w textarea możesz ustawić zresztą
setWrapStyleWord(true);
setLineWrap(true);
które automatycznie połamią ci wiersze, więc \n nie musi już być....

1 użytkowników online, w tym zalogowanych: 0, gości: 1