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 :)
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ć....