На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> Не идёт в runtime то, что идёт в отладчике
    Есть код:

    ExpandedWrap disabled
        
      void myTableHeader_mouseEntered(MouseEvent e) {
        TableColumnModel myColumnModel;
        TableModel myTableModel = jTable1.getModel();
        TableColumn myColumn2;
        headerColor = myTableHeader.getBackground();
        Point mousePoint = e.getPoint();
        int x = mousePoint.x;
        int y = mousePoint.y;
        Rectangle columnRectangle = myTableHeader.getHeaderRect(1);
        int rx = columnRectangle.x;
        int ry = columnRectangle.y;
        int rwidth = columnRectangle.width;
        int rheight = columnRectangle.height;
        if ((rx<x)&&(x<(rx+rwidth))&&(ry<y)&&(y<(ry+rheight))) {
          myColumn2 = jTable1.getColumnModel().getColumn(1);
          myColumn2.setHeaderValue("<html><body bgcolor=\"#FF0000\">Дата / время (ДМВ)</body></html>");
          int k2 = 0;
        }
      }
       
      void myTableHeader_mouseExited(MouseEvent e) {
        myTableHeader.setBackground(headerColor);
        TableColumn myColumn2 = jTable1.getColumnModel().getColumn(1);
        myColumn2.setHeaderValue("Дата / время (ДМВ)");
      }


    Смысл функции myTableHeader_mouseEntered в том, что когда стрелка мыши попадает в соответствующий столбец заголовка (в моём случае -- столбец номер 1, которому соответствует прямоугольник columnRectangle), то происходит изменение текста заголовка этого столбца.

    В отладчике это работает. Но когда я перехожу на обычное исполнение этой программы, то там изменение надписи почему-то не работает -- надпись остаётся такой же, какой и была, при попадании курсора мыши на соответствующий столбец заголовка. В чём причина этого?
    Сообщение отредактировано: erslgoeirjh -
      Вот так вроде бы работает:

      ExpandedWrap disabled
        public class CheckTable extends JFrame implements MouseMotionListener{
            Color headerColor;
            JTable table;
            CheckTable(){
                super();
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                table=new JTable(2,4);
                //table.addMouseListener(this);
                table.addMouseMotionListener(this);
         
                this.setFocusable(false);
         
                this.add(new JScrollPane(table));
                pack();
                setSize(300,300);
                setVisible(true);
            }
          
         
         
            public static void main(String [] args){
                new CheckTable();
            }
         
            public void mouseDragged(MouseEvent e) {
                //
            }
         
            public void mouseMoved(MouseEvent e) {
               TableColumn myColumn2;
              JTableHeader myTableHeader=table.getTableHeader();
              headerColor = myTableHeader.getBackground();
              Point mousePoint = e.getPoint();
              int x = mousePoint.x;
              int y = mousePoint.y;
              Rectangle columnRectangle = myTableHeader.getHeaderRect(1);
              int rx = columnRectangle.x;
              int ry = columnRectangle.y;
              int rwidth = columnRectangle.width;
              int rheight = columnRectangle.height;
              myColumn2 = table.getColumnModel().getColumn(1);  
              if ((rx<x)&&(x<(rx+rwidth))&&(ry<y)&&(y<(ry+rheight))) {
         
                myColumn2.setHeaderValue("<html><body bgcolor=\"#FF0000\">Дата / время (ДМВ)</body></html>");
              }else{
                myTableHeader.setBackground(headerColor);
              myColumn2.setHeaderValue("Дата / время (ДМВ)");
              }
                myTableHeader.repaint();
                int k2 = 0;
            }
         
          }

      Только с границами там что-то напутано: при наведении на первую ячейку столбца происходит изменение заголовка.
      Надо не забывать repaint() применять для отрисовки.
      К тому же если нужен не весь столбец, а только Header, то можно прикручивать MouseMotionListener только к нему :)
      Сообщение отредактировано: Большой Синий Кит -
      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0215 ]   [ 14 queries used ]   [ Generated: 23.05.24, 19:59 GMT ]