powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление компонентов с панели
15 сообщений из 15, страница 1 из 1
Удаление компонентов с панели
    #32685518
akula84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предположим что существует панель и на ней например таблица с данными. как удалить эту таблицу с панели, чтобы она больше не была видна на экране и была удалена таблица со всеми данными из памяти
...
Рейтинг: 0 / 0
Удаление компонентов с панели
    #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
Удаление компонентов с панели
    #32685780
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в догонку
Если у тебя есть Панел, на ней JScrollPane и на ней JTable то удалать нужно именно JScrollPane, а то swing начнет глюки выдавать.
...
Рейтинг: 0 / 0
Удаление компонентов с панели
    #32685813
akula84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. А еще такой вопрос, а можно ли как-нибудь все данные содержащиеся в TableModel удалить? А то если ее заново переопределять, то значения просто добавляются к ранее бывшим
...
Рейтинг: 0 / 0
Удаление компонентов с панели
    #32685825
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты в добавок и JTable переопредели и тогда уж точно все ок будет.
...
Рейтинг: 0 / 0
Удаление компонентов с панели
    #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
Удаление компонентов с панели
    #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
Удаление компонентов с панели
    #32686019
akula84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел в чем ошибка.
Почему-то он у меня не ловил вот это
if(docs==null)

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

а вот это, потому что null Layout.
Лучшего метода рисования пока не нашел для себя :(
jScrollPane1.setBounds(new Rectangle(16, 13, 495, 467));
...
Рейтинг: 0 / 0
Удаление компонентов с панели
    #32686083
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как на счет
Код: plaintext
1.
2.
panel.setLayout(new BorderLayout());
panel.add(new JScrollPane(new JTable()), BorderLayout.CENTER);   
...
Рейтинг: 0 / 0
Удаление компонентов с панели
    #32686692
akula84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут побаловался с layout.так действительно лучше! ;)
...
Рейтинг: 0 / 0
Удаление компонентов с панели
    #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
Удаление компонентов с панели
    #32686923
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поробуй сделать в самом конце - jPanel3.validate(), хз может поможет.
...
Рейтинг: 0 / 0
Удаление компонентов с панели
    #32686939
akula84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогло ;)
...
Рейтинг: 0 / 0
Удаление компонентов с панели
    #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
Удаление компонентов с панели
    #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
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление компонентов с панели
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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