Mam 2 pytania.
-
Jak automatycznie dopasować wysokość komórki w jTable do tekstu?
Dodam, że zawijam wiersze. -
Jak zmienić kolor calego wiersza?
Z góry dzięki.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
public class Tabela extends JFrame {
static JPanel playerPanel = new JPanel();
DefaultTableModel model = new DefaultTableModel(0,0);
JTable tbl = new JTable(model);
// ------------------------
public static void main(String[] args) {
new Tabela();
}
// ------------------------
public Tabela(){
super("Test");
playerPanel.setBackground(Color.DARK_GRAY);
add(playerPanel);
createPanel();
setSize(200, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
// ------------------------
private void createPanel()
{
// create object of table and table model
// add header of the table
String header[] = new String[] { "Prority", "Statulses" };
// add header in table model
model.setColumnIdentifiers(header);
//set model into the table object
tbl.setModel(model);
tbl.getColumnModel().getColumn(0).setMaxWidth(50);
JScrollPane scrollEpg = new JScrollPane(tbl);
playerPanel.setLayout(new BorderLayout());
playerPanel.add(scrollEpg);
TableColumn td = tbl.getColumn("Statulses");
td.setCellRenderer(new Renderer());
// add row dynamically into the table
model.addRow(new Object[] { "<html><b><h3>data</h3></b></html>", "Tutaj wypisuję rózne głupoty, nieważne co byle było duże, np opowieści śmiesznej treści\"" });
model.addRow(new Object[] { "<html><b><h3>data</h3></b></html>", "\"Tutaj wypisuję rózne głupoty, nieważne co byle było duże, np opowieści śmiesznej treści\"" });
model.addRow(new Object[] { "<html><b><h3>data</h3></b></html>", "\"Tutaj wypisuję rózne głupoty, nieważne co byle było duże, np opowieści śmiesznej treści\"" });
updateRowHeights();
}
private void updateRowHeights()
{
try
{
for (int row = 0; row < tbl.getRowCount(); row++)
{
int rowHeight = 0;
for (int column = 0; column < tbl.getColumnCount(); column++)
{
Component comp = tbl.prepareRenderer(tbl.getCellRenderer(row, column), row, column);
rowHeight = Math.max(rowHeight, comp.getPreferredSize().height);
}
tbl.setRowHeight(row, rowHeight);
}
}
catch(ClassCastException e) {}
}
}
//===========================================================================
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.setText((String) value);
return ta;
}
}