Не Удается Установить Фиксированную Ширину Столбцов У Таблицы

Статус
Закрыто для дальнейших ответов.

Anneta

New member
05.02.2011
3
0
#1
Здравствуйте!
хочу в таблице все столбцы сделать фиксированной ширины (каждому столбцу установить свою ширину)

Код:
	public Form() {
initComponents();
setDefaultCloseOperation(EXIT_ON_CLOSE);
...

//создаем модель данных и заполнем ее данными из DataRevie.dataRevie
TableModel model = new TableNewRevieModel(DataRevie.dataRevie);
//подключаем модель данных к таблице
jTable1.setModel(model);


Component c = new MyEditor().getTableCellEditorComponent(jTable1,
null, true, 0, 0);
jTable1.setRowHeight(c.getPreferredSize().height);

jTable1.addMouseListener(new MouseAdapter(){ 
@Override
public void mouseClicked(MouseEvent e){
if (jTable1.getSelectedColumn() != 7 ){
jTextPane1.setText(jTable1.getValueAt(jTable1.getSelectedRow(), 3).toString());
bTake.setVisible(true);
bSpam.setVisible(true);
}			  
}
@Override
public void mousePressed(MouseEvent e){ 
if (jTable1.getSelectedColumn() == 7){
try{
String url = jTable1.getValueAt(jTable1.getSelectedRow(), jTable1.getSelectedColumn()).toString();
Desktop.getDesktop().browse(new URI(url));					  
}catch(IOException e1){
e1.printStackTrace();
}catch(URISyntaxException e1){
e1.printStackTrace();
}

}


}

});
jTable1.setDefaultRenderer ( Object.class, new DefaultTableCellRenderer()
{
private JLabel l = new JLabel ();
public Component getTableCellRendererComponent ( JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column )
{

if(column == 7) {
//Чтобы JLabel выглядел как полноценная гиперссылка
l.setText("<html><a href=yandex.ru>"+value.toString()+"</a></html>");
//Чтобы JLabel выглядел как полноценная гиперссылка при наведении курсора мыши
l.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
return l;
}else{

l.setText(value.toString());
return l;
}

}
} );

TableRowSorter<TableModel> sorter = new TableRowSorter(model) {
@Override
public Comparator<?> getComparator(int column) {
// для нулевой строки+
if (column == 0) {
return new Comparator<String>() {
@Override
public int compare(String s1,String s2) {
return Integer.parseInt(s1) - Integer.parseInt(s2);
}
};
}
// для всех остальных
return super.getComparator(column);
}
};
jTable1.setRowSorter(sorter);

// jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(10);
//jTable1.getColumnModel().getColumn(0).setMaxWidth(3);
//jTable1.getColumnModel().getColumn(0).setResizable(false);
// jTable1.getColumnModel().getColumn(1).setPreferredWidth(20);
jTable1.getColumnModel().getColumn(1).setMaxWidth(20);
// jTable1.getColumnModel().getColumn(1).setResizable(false);	  

....

}
вот это все
Код:
		// jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(10);
jTable1.getColumnModel().getColumn(0).setMaxWidth(10);
jTable1.getColumnModel().getColumn(0).setResizable(false);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(20);
jTable1.getColumnModel().getColumn(1).setMaxWidth(20);
jTable1.getColumnModel().getColumn(1).setResizable(false);
я перепробова ничего не помогло=(

подскажите в чем может быть причина?
 

Anneta

New member
05.02.2011
3
0
#2
решено, проблема была из-за повторного заполнения модели и обновления таблицы в другом методе
 
Статус
Закрыто для дальнейших ответов.