Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление компонентов с панели / 15 сообщений из 15, страница 1 из 1
08.09.2004, 15:07
    #32685518
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
Предположим что существует панель и на ней например таблица с данными. как удалить эту таблицу с панели, чтобы она больше не была видна на экране и была удалена таблица со всеми данными из памяти
...
Рейтинг: 0 / 0
08.09.2004, 16:24
    #32685768
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
Код: plaintext
1.
2.
3.
4.
5.
6.
JPanel panel=new JPanel;
JTable table=new JTable();
panel.add(table);
....
panel.remove(table);
panel.repaint();
.....
...
Рейтинг: 0 / 0
08.09.2004, 16:27
    #32685780
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
в догонку
Если у тебя есть Панел, на ней JScrollPane и на ней JTable то удалать нужно именно JScrollPane, а то swing начнет глюки выдавать.
...
Рейтинг: 0 / 0
08.09.2004, 16:40
    #32685813
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
Спасибо. А еще такой вопрос, а можно ли как-нибудь все данные содержащиеся в TableModel удалить? А то если ее заново переопределять, то значения просто добавляются к ранее бывшим
...
Рейтинг: 0 / 0
08.09.2004, 16:44
    #32685825
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
А ты в добавок и JTable переопредели и тогда уж точно все ок будет.
...
Рейтинг: 0 / 0
08.09.2004, 17:02
    #32685874
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
Что глючное происходит, у меня постоянно сбиваются имена столбцов при переходе между таблицами,а так же не затираются данные бывшие раннее в docs:
код примерно такой при рисовании

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
  void doMouseClicked(MouseEvent me){
    tp = jTree1.getPathForLocation(me.getX(),me.getY());
    if(tp == null)
    {
    }
    else if(tp.toString().equals("[Документы, Рублевые, Платежные поручения]"))
    {
      try
      {      
        if(docs==null)
        {          
        }
        else
        {
          jScrollPane1.remove(docs);
          jScrollPane1.repaint();
          jPanel3.remove(jScrollPane1);
          jPanel3.repaint();
        }
 //Возвращает вектор со строками выборки 
      Vector result = sql.select_payments();
      Vector columns = new Vector();
      columns.addElement("Номер");
      columns.addElement("Плательщик");
      columns.addElement("Сумма");
      columns.addElement("Дата");
      columns.addElement("Статус документа");
      
      model = null;
      TableModel model = new DefaultTableModel(result,columns);
      docs = null;
      JTable docs = new JTable(model);
      docs.setBorder(BorderFactory.createEtchedBorder());
      docs.setToolTipText("");
      docs.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
      docs.setColumnSelectionAllowed(false);
      docs.setRowHeight(15);
      jScrollPane1 = new JScrollPane(docs);
      jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
      jScrollPane1.setBounds(new Rectangle(16, 13, 495, 467));
      jPanel3.add(jScrollPane1, null);
      this.getContentPane().add(jPanel3, null);       
      
      
    }catch(Exception e) {
                    e.printStackTrace(); }

    }
    else if(tp.toString().equals("[Документы, Письма]"))
    {
      try
        {
          if(docs==null)
          {          
          }
          else
          {
            jScrollPane1.remove(docs);
            jScrollPane1.repaint();
            jPanel3.remove(jScrollPane1);
            jPanel3.repaint();
          }
          Vector letters = new Vector();
          letters = sql.letters();
          Vector columns_letter = new Vector();
          columns_letter.addElement("Дата");
          columns_letter.addElement("Отправитель");
          columns_letter.addElement("Тема письма");
          model = null;
          TableModel model = new DefaultTableModel(letters,columns_letter);
          docs = null;
          docs = new JTable(model);
 //        TableColumnModel cm = new DefaultTableColumnModel();         
 //        JTableHeader tbheader = new JTableHeader(cm); 
 //        docs.setTableHeader(tbheader); 
          docs.setBorder(BorderFactory.createEtchedBorder());
          docs.setToolTipText("");
          docs.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
          docs.setColumnSelectionAllowed(false);
          docs.setRowHeight(15);
          jScrollPane1 = new JScrollPane(docs);
          jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
          jScrollPane1.setBounds(new Rectangle(16, 13, 495, 467));
          jPanel3.add(jScrollPane1, null);
          this.getContentPane().add(jPanel3, null);       
  
  
  
        }catch(Exception ex) {
                      ex.printStackTrace(); }

    }
    else
    {
      System.out.println(tp);
    }
}

...
Рейтинг: 0 / 0
08.09.2004, 17:24
    #32685937
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
ну во первых, чтобы удалить таблицу, тебе достаточно написать
Код: plaintext
1.
2.
jPanel3.remove(jScrollPane1);
jPanel3.repaint();
во вторых, зачем тебе строка
Код: plaintext
this.getContentPane().add(jPanel3, null);
как я понял, jPanel3 ты никуда не удаляешь, так зачем ее снова и снова добавлять в ContentPane?? Достаточно только этого

Код: plaintext
1.
2.
3.
4.
jScrollPane1 = new JScrollPane(docs);
          jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jScrollPane1.setBounds(new Rectangle(16, 13, 495, 467));
jPanel3.add(jScrollPane1, null);
И еще, зачем вот это??
Код: plaintext
1.
jScrollPane1.setBounds(new Rectangle(16, 13, 495, 467));
...
Рейтинг: 0 / 0
08.09.2004, 17:50
    #32686019
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
Нашел в чем ошибка.
Почему-то он у меня не ловил вот это
if(docs==null)

Спасибо огромное за помощь

а вот это, потому что null Layout.
Лучшего метода рисования пока не нашел для себя :(
jScrollPane1.setBounds(new Rectangle(16, 13, 495, 467));
...
Рейтинг: 0 / 0
08.09.2004, 18:09
    #32686083
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
А как на счет
Код: plaintext
1.
2.
panel.setLayout(new BorderLayout());
panel.add(new JScrollPane(new JTable()), BorderLayout.CENTER);   
...
Рейтинг: 0 / 0
09.09.2004, 10:38
    #32686692
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
Тут побаловался с layout.так действительно лучше! ;)
...
Рейтинг: 0 / 0
09.09.2004, 11:11
    #32686816
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
А теперь возникла такая проблемка.
каждый раз когда выполняется вот этот кусок кода, то таблица не отображается, видна только панель. Как только изменяю размер окна, то таблица появляется. В чем может быть проблема,вроде все нормально

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
        
        jPanel3.remove(jScrollPane2);
        jPanel3.repaint();
        Vector letters = new Vector();
 //Получаю вектор значений  
        letters = sql.letters();
        Vector columns_letter = new Vector();
        columns_letter.addElement("Дата");
        columns_letter.addElement("Отправитель");
        columns_letter.addElement("Тема письма");
        model = null;
        model = new DefaultTableModel(letters,columns_letter);
        docs = null;
        docs = new JTable(model);
        docs.setBorder(BorderFactory.createEtchedBorder());
        docs.setToolTipText("");
        docs.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
        docs.setColumnSelectionAllowed(false);
        docs.setRowHeight(15);
        jScrollPane2 = new JScrollPane(docs);
        jScrollPane2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        jPanel3.add(jScrollPane2,borderLayout2.CENTER);      
        System.out.println("В письмах " + model.getRowCount());
...
Рейтинг: 0 / 0
09.09.2004, 11:37
    #32686923
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
поробуй сделать в самом конце - jPanel3.validate(), хз может поможет.
...
Рейтинг: 0 / 0
09.09.2004, 11:40
    #32686939
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
Помогло ;)
...
Рейтинг: 0 / 0
09.09.2004, 15:12
    #32687714
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
А как определить двойной щелчок по значению в таблице

В этом варианте как то странно получается
вот эта строка
if (e.getValueIsAdjusting()) return;
при одном нажатии мышкой она формирует 2 события:видимо мышь нажата и отпущена


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 //Ask to be notified of selection changes. 
ListSelectionModel rowSM = table.getSelectionModel();
rowSM.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent e) {
         //Ignore extra messages. 
        if (e.getValueIsAdjusting()) return;

        ListSelectionModel lsm =
            (ListSelectionModel)e.getSource();
        if (lsm.isSelectionEmpty()) {
            ... //no rows are selected 
        } else {
            int selectedRow = lsm.getMinSelectionIndex();
            ... //selectedRow is selected 
        }
    }
});
...
Рейтинг: 0 / 0
09.09.2004, 16:30
    #32687989
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление компонентов с панели
Я еще вот это добавил и все заработало

Это правильный вариант или нет?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        docs.addMouseListener(new MouseAdapter(){
          public void mouseClicked(MouseEvent e)
          {
            int k=e.getClickCount();
            System.out.println(k);
            if(k==2)
            {
              JFrame pp = new pp_frame();
              pp.setVisible(true);
            }
          }
        });
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление компонентов с панели / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]