有沒有可能看看你的代碼?
例如,在這個簡單的例子沒有被包裹:
public class TableTest {
public static void main(String[] args) {
JFrame frm = new JFrame();
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() {
return 10;
}
public int getRowCount() {
return 10;
}
public Object getValueAt(int row, int col) {
return new String(
"<a href=\"127.0.0.1\">row*col*1000000000</a>");
}
};
JTable table = new JTable(dataModel);
table.getColumnModel().getColumn(2).setMaxWidth(120);
table.getColumnModel().getColumn(2).setPreferredWidth(120);
table.getColumnModel().getColumn(2).setMinWidth(120);
frm.getContentPane().add(table);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setPreferredSize(new Dimension(300, 300));
frm.pack();
frm.setVisible(true);
}
}
編輯@latata 您可以嘗試創建自己的CellRenderer和玩它應用到所需的列:
table.getColumnModel().getColumn(0).setCellRenderer(new NonWrappedCellRenderer());
渲染器可能如下所示:
class NonWrappedCellRenderer extends JTextArea implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(
JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
this.setText((String)value);
this.setLineWrap(false);
return this;
}
}
這裏行不會的Cuz JTextArea中默認使用
setLineWrap(false)
包裹的問題是JTextArea中無法正確顯示HTML標籤,我可以看到。所以你會以某種方式解決這個問題。您可以嘗試使用JTextPane或其他可以處理標記的東西,並檢查它是否具有包裝屬性。 或者,您可以通過手來計算字體指標,單元格寬度和修剪文本。
你想讓文字做什麼呢?簡單地被切斷? – 2011-03-06 18:52:27
我猜OP在超過屏幕寬度時正在尋找一個水平滾動條來顯示。 – asgs 2011-03-11 23:46:29