zawijanie tekstu w JTable

0

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

0
  1. Jesteś pewien, że ktoś ma ochotę patrzeć na tabelkę w której się zawijają wiersze ?
  2. Zakładam, że za tabelką kryje się model. Napisz w modelu metodę:
public boolean isCellEditable(int wiersz,int kolumna)
{
    return false;
}

pozdrawiam

0

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

0

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.

0

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

0
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);        
0

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

0

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);

0
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

0

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

0

Dzięki bardzo. Teraz właśnie siedzę nad tym.
Dziękuje bardzo i pozdrawiam

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