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

Тема в разделе "Java", создана пользователем Anneta, 3 июл 2013.

Статус темы:
Закрыта.
  1. Anneta

    Anneta New Member

    Регистрация:
    5 фев 2011
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте!
    хочу в таблице все столбцы сделать фиксированной ширины (каждому столбцу установить свою ширину)

    Код (Text):
        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);    

    ....

    }
    вот это все
    Код (Text):
            // 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);
    я перепробова ничего не помогло=(

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

    Anneta New Member

    Регистрация:
    5 фев 2011
    Сообщения:
    3
    Симпатии:
    0
    решено, проблема была из-за повторного заполнения модели и обновления таблицы в другом методе
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей