Witam.
Jak zrobić aby dane które nie zmieszczą się w jednym wierszu kolumny przechodziły do następnego wiersza.
I jak zablokować aby nie można było edytować tabelki.
Czekam na pomoc. Dziękuje
- Jesteś pewien, że ktoś ma ochotę patrzeć na tabelkę w której się zawijają wiersze ?
- Zakładam, że za tabelką kryje się model. Napisz w modelu metodę:
public boolean isCellEditable(int wiersz,int kolumna)
{
return false;
}
pozdrawiam
Witam
Dzięki za odpowiedz ale jak mam to zastosować?
Mam stworzoną tabele składającą się z 5 kolumn. Kolumn nie mogę za dużo powiększyć a tekst jest długi.
Wpisuje dane do tabeli za pomocą tabela.setValueAt(dane,0,0);
Więc jakbyś mógł to wytłumacz mi w łatwiejszy sposób jak to dokładnie zrobić.
Pozdrawiam
tabelę tworzyć się powinno na podstawie modelu tabeli, czyli klasy extends AbstractTableModel
w niej mozesz wpisac m.in. wlasnie metode isCellEditable
a samą a samą tabele tworzysz później new JTable(new MojModelTabeli()); lub tez ustawiasz model do istniejącej tabeli: moja_tabela.setModel(new MojModelTabeli());
a rozmiar kolumn ustawiasz setPrefferedSize dla konkretnej kolumny
pzdr.
Hey.
Dzieki za pomoc.Ale nic mi to nie pomogło bo nie wiem jak to zrobić. Tworze tabele tak:
tabModel = new DefaultTableModel();
tabela = new JTable(tabModel);
//tabela.isCellEditable(6,iloscWarstw);
tabModel.setNumRows(iloscWarstw);
tabModel.setColumnCount(6);
tabela.setModel(tabModel);
tabela.setBackground(Color.blue);
Teraz jak zrobić zeby zawijało wiersze i żeby nie można było edytować.
Dziękuje
DefaultTableModel tabModel = new DefaultTableModel(){
/* serialVersionUID powinno byc podane, gdyz DefaultTableModel jest serializowalne *
* Numer wygenerowal mi Eclipse *
* Jezeli nie bedziesz korzystal z zadnej bazy danych, to nie musisz tego podawac */
private static final long serialVersionUID = -7166748879676214576L;
@Override
public boolean isCellEditable(int x, int y) {
return false;
}
};
tabela = new JTable(tabModel);
Witam
Edytowanie tabeli jest zablokowane, dziękuje za pomoc.
Jeszcze zawijanie tekstu w komórce
Coś kombinowałem zrobić ale efekty marne. Przesyłam kod:
public Component getTableCellRendererComponent(JTable tabela,
Object value, boolean isSelected, boolean hasFocus, int
row, int column) {
if (tabela.getValueAt(0,0)=="") {
tabela.setValueAt(label,1,1);
label.setText("hello");
}
return label;
}
nie sprawdza czy w tabeli w komórce jest coś wpisane.
Proszę o pomoc
Zobacz post nr 20 z
http://www.codefund.com/50/multi-line-cells-in-a-jtable-500267.shtm
Jeżeli chcesz wyłączyć edycję w całej tabeli, to wystarczy jedna linijka:
table.setEnabled(false);
table.setEnabled(false);
robi znacznie więcej niż zablokowanie edycji, blokuje również zaznaczanie, można przecież nie pozwalać na edycję komórek ale dopuszczać działania na zaznaczonej komórce
pozdrawiam
W kolumnie Html sam dzielisz na wiersze, w kolumnie JTextArea dzieli program
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class Tabela extends JFrame
{
JScrollPane panel=null;
//------------------------
public static void main(String[] args)
{
new Tabela();
}
//------------------------
public Tabela()
{
super("Test");
setLayout(new BorderLayout(3,3));
createPanel();
add(panel,BorderLayout.CENTER);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
//------------------------
private void createPanel()
{
Model model=new Model();
JTable tabela=new JTable(model);
tabela.setRowHeight(40);
TableColumn td=tabela.getColumn("JTextArea");
td.setCellRenderer(new Renderer());
panel=new JScrollPane(tabela);
}
}
//------------------------------------------------
class Model extends AbstractTableModel
{
private String[] columnNames={"Html","JTextArea"};
//------------------------
public int getRowCount()
{
return 6;
}
//------------------------
public int getColumnCount()
{
return columnNames.length;
}
//------------------------
public String getColumnName(int kolumna)
{
return columnNames[kolumna];
}
//------------------------
public Object getValueAt(int wiersz,int kolumna)
{
if(kolumna==0)
{
return "<html>Wiersz: "+wiersz+"<br>Kolumna: "+kolumna+"</html>";
}
return "Tutaj wypisuję rózne głupoty, nieważne co byle było duże, np opowieści śmiesznej treści";
}
}
//------------------------------------------------
class Renderer implements TableCellRenderer
{
public Component getTableCellRendererComponent(JTable table,Object value,
boolean isSelected,boolean hasValue,int row,int column)
{
JTextArea ta=new JTextArea();
ta.setLineWrap(true);
ta.setWrapStyleWord(true);
ta.setRows(3);
ta.setText((String)value);
return ta;
}
}
pozdrawiam
Dzięki bardzo. Teraz właśnie siedzę nad tym.
Dziękuje bardzo i pozdrawiam