我有一个多列jtable,我希望根据字符串中的换行符("\n")在单元格中的多行显示某些列的字符串内容.每个字符串的换行符数是随机的,仅在运行时才知道.只有受影响的行必须跨所有列调整到新高度.每个受影响的列可能有不同数量的行,并且需要将行高调整为跨列的最大高度.
我该怎么做呢?
如果可能的话,我们非常感谢一些示例代码.
TIA
我无法动态更改我的行的高度,有一个方法,我需要重载?
- 编辑 -
很抱歉这是我的第一篇短信....我的问题与改变行高有关,具体取决于内容.所以我到目前为止所做的是一个实现TabelCellRenderer的内部类.
这就是我目前正在进行的行高计算.
private static class TextAreaRenderer extends JTextPane implements TableCellRenderer
{
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected,
boolean hasFocus, int row,
int column)
{
/* Setup Code here */
this.setText(((String)value).getEntityName());
int height = new Double(this.getPreferredSize().getHeight()).intValue();
if (table.getRowHeight(row) < height)
table.setRowHeight(row, height);
/* some more code */
return this;
}
Run Code Online (Sandbox Code Playgroud)
}
这是正确的方法吗?谢谢.
我想把一个字符串放在JTable比给定单元格宽度更长的字符串中.如何rowHeight动态设置以便我可以读取整个String?这是一个例子:
import javax.swing.*;
public class ExampleTable {
public JPanel createTable() {
JPanel totalGUI = new JPanel();
//define titles for table
String[] title = {"TITLE1", "TITLE2", "TITLE3"};
//table data
Object[][] playerdata = {
{new Integer(34), "Steve", "test test test"},
{new Integer(32), "Patrick", "dumdi dumdi dummdi dumm di di didumm"},
{new Integer(10), "Sarah", "blabla bla bla blabla bla bla blabla"},};
//create object 'textTable'
JTable textTable = new JTable(playerdata,title);
//set column width
textTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
textTable.getColumnModel().getColumn(0).setPreferredWidth(60);
textTable.getColumnModel().getColumn(1).setPreferredWidth(60);
textTable.setDefaultRenderer(String.class, new RowHeightCellRenderer());
//scrollbar …Run Code Online (Sandbox Code Playgroud) 我正在使用Nimbus L&F.我正在尝试使用以下代码全局更改所有JTable的字体大小:
NimbusLookAndFeel nimbus = new NimbusLookAndFeel();
UIManager.setLookAndFeel(nimbus);
UIDefaults d = nimbus.getDefaults();
d.put("Table.font", new FontUIResource(new Font("SansSerif", Font.PLAIN, 18)));
Run Code Online (Sandbox Code Playgroud)
它正常工作,应用程序中的所有JTable行都使用新字体.我使用更大的字体大小使表格在大分辨率下更具可读性.
但问题是行高没有改变,导致字体被截断.我试过以下代码:
d.put("Table.contentMargins", new Insets(50,50,50,50));
d.put("Table:\"Table.cellRenderer\".contentMargins", new Insets(50,50,50,50));
Run Code Online (Sandbox Code Playgroud)
但它没有改变显示的表格中的任何内容.
我可以在不调用setRowHeight()每个JTable实例的情况下全局更改行高吗?
我是java-swing的新手.我想在表格单元格中添加图标.但是当我在单元格中添加ImageIcon时,它只显示路径而不是图标.
这是我的代码.
public void createGUI(ArrayList<String> params, String type) {
try {
DefaultTableModel model = new DefaultTableModel();
model.addColumn("ParameterName");
model.addColumn("ParameterType");
model.addColumn("Operation");
for (int i = 0; i < params.size() - 4; i++) {
String param_name = params.get(i).toString().substring(0, params.get(i).toString().indexOf("["));
String param_type = params.get(i).toString().substring(params.get(i).toString().indexOf("[") + 1, params.get(i).toString().indexOf("]"));
//URL url = ClassLoader.getSystemClassLoader().getResource("");
ImageIcon image = new ImageIcon("/com/soastreamer/resources/delete_idle.png");
// JLabel label = new JLabel(image);
model.addRow(new Object[]{param_name, param_type.toUpperCase(),image});
}
Action delete = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
JTable table = (JTable) e.getSource();
int modelRow …Run Code Online (Sandbox Code Playgroud)