powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Несколько вопросов по swing
14 сообщений из 14, страница 1 из 1
Несколько вопросов по swing
    #33468028
Gold Fish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Есть JTable расположеный в JScrollPane. когда я програмно (т.е. не мышкой, а из кода) перемещаю курсор в таблице скрол не перемещается. Как заставить идти его за курсором
2. Есть несколько JInternalFrame расположеных на JDesktopPane, когда открываешь новый фрейм он располагается позади всех. Как его открывать поверх остальных и вообще по клику мышки на фрейме, если он расположен на заднем плане выводить на передний.
3. Как JInternalFrame зделать модальным(т.е. Если он открыт, то нельзя перевести управление на другой фрейм, до закрытия модального)
...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33468869
KPIIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Надо посмотреть события, которые выкидывает таблица при скролле - наверняка fire... надо делать, чтоб листенер JScrollPane мог "перерисовывать" свою позицию
2. JinternalFrame.setSelected(boolean)
3. а может лучше JDialog?
...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33469489
Gold Fish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Вопрос какраз и состоит как перерисовать позицию скрола
2. Что-то не помогает :-(
3. Идея!!!!
...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33469580
KPIIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Я думаю стоит воспользоваться JDK DOCS + google - 100% такое уже кто то делал
2. Кусок кода для работы с окном приведите
...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33470222
Gold Fish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Окно1 по нажатию кнопки на нем открывается второе окно
Код: 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.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
 import  java.beans.PropertyVetoException;
 import  javax.swing.*;
 import  java.sql.*;

/**
 *
 * @author  yr
 */
 public   class  StartWindow  extends  ConnectedInternalFrame {
    
    /** Creates new form StartWindow */
     public  StartWindow() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
     private   void  initComponents() {
        jPanel1 =  new  javax.swing.JPanel();
        jButton1 =  new  javax.swing.JButton();
        jButton2 =  new  javax.swing.JButton();
        jList1 =  new  javax.swing.JList();

        getContentPane().setLayout( null );

        setClosable(true);
        setMaximizable(true);
        setResizable(true);
        setAlignmentX( 100 .0F);
        setAlignmentY( 200 .0F);
        setDebugGraphicsOptions(javax.swing.DebugGraphics.NONE_OPTION);
        setMinimumSize( new  java.awt.Dimension( 300 ,  200 ));
        setPreferredSize( new  java.awt.Dimension( 300 ,  200 ));
        addInternalFrameListener( new  javax.swing.event.InternalFrameListener() {
             public   void  internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
                formInternalFrameActivated(evt);
            }
             public   void  internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
            }
             public   void  internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
            }
             public   void  internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
                formInternalFrameDeactivated(evt);
            }
             public   void  internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
            }
             public   void  internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
            }
             public   void  internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
            }
        });

        jPanel1.setLayout( null );

        jButton1.setText("jButton1");
        jButton1.addActionListener( new  java.awt.event.ActionListener() {
             public   void  actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jPanel1.add(jButton1);
        jButton1.setBounds( 30 ,  260 ,  75 ,  23 );

        jButton2.setText("jButton2");
        jPanel1.add(jButton2);
        jButton2.setBounds( 260 ,  260 ,  75 ,  23 );

        jPanel1.add(jList1);
        jList1.setBounds( 120 ,  90 ,  0 ,  0 );

        getContentPane().add(jPanel1);
        jPanel1.setBounds( 0 ,  0 ,  400 ,  330 );

        pack();
    }
    // </editor-fold>//GEN-END:initComponents

     private   void  formInternalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameDeactivated
// TODO add your handling code here:
         try {
         this .setSelected(false);
      
        } catch (PropertyVetoException e){
          System.out.println(e);   
        }
    }//GEN-LAST:event_formInternalFrameDeactivated

     private   void  formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameActivated
       try {
         this .setSelected(true);
      
        } catch (PropertyVetoException e){
          System.out.println(e);   
        }
    }//GEN-LAST:event_formInternalFrameActivated

     private   void  jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
        Grade a =  new  Grade();
        a.SetConn(conn);
        a.pasteData();
        
        this .getParent().add(a);
        a.setVisible(true);
    }//GEN-LAST:event_jButton1ActionPerformed
    
    /** Exit the Application */
     private   void  exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
        System.exit( 0 );
    }//GEN-LAST:event_exitForm
    
    /**
     * @param args the command line arguments
     */
     public   static   void  main(String args[]) {
        java.awt.EventQueue.invokeLater( new  Runnable() {
             public   void  run() {
                 new  StartWindow().setVisible(true);
            }
        });
    }
    
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
     private  javax.swing.JButton jButton1;
     private  javax.swing.JButton jButton2;
     private  javax.swing.JList jList1;
     private  javax.swing.JPanel jPanel1;
    // End of variables declaration//GEN-END:variables
  
}

Окно2
Код: 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.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
 import  javax.swing.*;
 import  java.sql.*;
 import  javax.swing.table.*;
 import  java.beans.PropertyVetoException;
/**
 *
 * @author  yr
 */
 public   class  Grade  extends  ConnectedInternalFrame {
     private  Statement stat;
     private  ResultSet rs;
    /** Creates new form Grade */
     public  Grade() {
        initComponents();
        
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
     private   void  initComponents() {
        jButton1 =  new  javax.swing.JButton();
        jButton2 =  new  javax.swing.JButton();
        jScrollPane1 =  new  javax.swing.JScrollPane();
        jTable1 =  new  javax.swing.JTable();

        getContentPane().setLayout( null );

        setClosable(true);
        setForeground(java.awt.Color.white);
        setMaximizable(true);
        setResizable(true);
        setAlignmentX( 100 .0F);
        setAlignmentY( 200 .0F);
        setDebugGraphicsOptions(javax.swing.DebugGraphics.NONE_OPTION);
        setMinimumSize( new  java.awt.Dimension( 300 ,  200 ));
        setPreferredSize( new  java.awt.Dimension( 300 ,  200 ));
        addInternalFrameListener( new  javax.swing.event.InternalFrameListener() {
             public   void  internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
                formInternalFrameActivated(evt);
            }
             public   void  internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
            }
             public   void  internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
            }
             public   void  internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
                formInternalFrameDeactivated(evt);
            }
             public   void  internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
            }
             public   void  internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
            }
             public   void  internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
            }
        });

        jButton1.setLabel("Ok");
        jButton1.addActionListener( new  java.awt.event.ActionListener() {
             public   void  actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton1);
        jButton1.setBounds( 20 ,  250 ,  47 ,  23 );

        jButton2.setLabel("Cancel");
        getContentPane().add(jButton2);
        jButton2.setBounds( 240 ,  250 ,  67 ,  23 );

        jScrollPane1.setAutoscrolls(true);
        jScrollPane1.setFocusCycleRoot(true);
        jScrollPane1.setFocusTraversalPolicyProvider(true);
        jTable1.setModel( new  javax.swing.table.DefaultTableModel(
             new  Object [][] {
                { null ,  null ,  null ,  null },
                { null ,  null ,  null ,  null },
                { null ,  null ,  null ,  null },
                { null ,  null ,  null ,  null }
            },
             new  String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds( 0 ,  0 ,  390 ,  230 );

        pack();
    }
    // </editor-fold>//GEN-END:initComponents

     private   void  formInternalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameDeactivated
// TODO add your handling code here:
         try {
           this .setSelected(false);
      
        } catch (PropertyVetoException e){
          System.out.println(e);   
        }
    }//GEN-LAST:event_formInternalFrameDeactivated

     private   void  formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameActivated
// TODO add your handling code here:
         try {
           this .setSelected(true);
      
        } catch (PropertyVetoException e){
          System.out.println(e);   
        }
    }//GEN-LAST:event_formInternalFrameActivated

     private   void  jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
        try { 
         while  (rs.next()){
             if  (rs.getString( 1 ).equals("1210.1#21586#0")){
                 break ;
            }
        }
       } catch (SQLException e){
           System.out.println(e);
       }
    }//GEN-LAST:event_jButton1ActionPerformed
    
    /** Exit the Application */
     private   void  exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
        System.exit( 0 );
    }//GEN-LAST:event_exitForm
    
    /**
     * @param args the command line arguments
     */
     public   static   void  main(String args[]) {
        java.awt.EventQueue.invokeLater( new  Runnable() {
             public   void  run() {
                 new  Grade().setVisible(true);
            }
        });
    }
    
     public   void  pasteData(){
     
    
     try { 
    DatabaseMetaData meta = conn.getMetaData();
     if  (meta.supportsResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE)){
        stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 
                            ResultSet.CONCUR_READ_ONLY);
    }
     else 
    {
        stat = conn.createStatement();
    }
         
     
    
      rs = stat.executeQuery("select * from official_position");
    
      DBTableModel model =  new  DBTableModel(rs);
      jTable1.setModel(model);
       new  TableFindAction().install(jTable1);
     
      

      } catch (SQLException e){
          System.out.println(e);
      }  
      
      }   
    // jTable1.setModel();
     
     
    
    
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
     private  javax.swing.JButton jButton1;
     private  javax.swing.JButton jButton2;
     private  javax.swing.JScrollPane jScrollPane1;
     private  javax.swing.JTable jTable1;
    // End of variables declaration//GEN-END:variables
    
}
...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33473514
Sergey Karpenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gold Fish1. Есть JTable расположеный в JScrollPane. когда я програмно (т.е. не мышкой, а из кода) перемещаю курсор в таблице скрол не перемещается. Как заставить идти его за курсором
2. Есть несколько JInternalFrame расположеных на JDesktopPane, когда открываешь новый фрейм он располагается позади всех. Как его открывать поверх остальных и вообще по клику мышки на фрейме, если он расположен на заднем плане выводить на передний.
3. Как JInternalFrame зделать модальным(т.е. Если он открыт, то нельзя перевести управление на другой фрейм, до закрытия модального)
По поводу скрола
Код: plaintext
scrollRectToVisible(getCellRect(curRec,  0 , false))
По поводу модальности JInternalFrame модальным быть не может :( ну в полном смысле этого слова. Вы можете его расположить в самом верхнем слое JDesktopPane а дальше написать свой DesktopManager который не даст другим фреймам активироваться пока пока существует этот модальный фрейм :) но полной модальности всё равно получить не удастся
...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33474867
Exppp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про scroll кажется Sergey Karpenkov здраво ответил

у JInternalFrame есть метод show который не deprecated
и который по моему всё делает

как сделать модальным internalframe можно прочитать в JOptionPane.java
(он же умеет делать модальный OptionPane в internalframe.)
В файле написана страшная тайна - для этого нужно всего лишь вызвать
приватный метод - во как просто, делается это через priviliged action

По страшному блату откопал сурсник, давно это было. там коментов
больше половины - ты их смело стирай, там бредятина одна.
Но помни, вызвать модальное окно из модального низя.
Не используй модальные нутряные фреймы
В JOptionPane можно передавать объекты вместо текста, см. Java Tutorial
...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33475893
KPIIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не стал разбирать мега-код: вот пример
Код: 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.
 import  javax.swing.*;
 import  java.awt.*;
 import  java.awt.event.ActionListener;
 import  java.beans.PropertyVetoException;


 public   class  TestFrame  extends  JFrame{
        JButton j1,j2;
        JDesktopPane jdp =  new  JDesktopPane();

     public  TestFrame(){
        j1 =  new  JButton("With");
        j2 =  new  JButton("Without");
       JPanel panel =  new  JPanel( new  FlowLayout( FlowLayout.LEFT ));

        panel.add(j1);
        panel.add(j2);
         this .getContentPane().add(panel,BorderLayout.NORTH);
         this .getContentPane().add(jdp);
        j1.addActionListener( new  java.awt.event.ActionListener() {
             public   void  actionPerformed(java.awt.event.ActionEvent evt) {
                JInternalFrame ifr =  new  JInternalFrame("With");
                TestFrame. this .jdp.add(ifr, new  Integer( 5 ));
                ifr.setSize( 100 , 100 );
                ifr.setVisible(true);
                 try {
                ifr.setSelected( true );
                } catch (PropertyVetoException ex){

                }

            }
        });

        j2.addActionListener( new  java.awt.event.ActionListener() {
             public   void  actionPerformed(java.awt.event.ActionEvent evt) {
               JInternalFrame ifr =  new  JInternalFrame("Without");

                ifr.setVisible(true);
                ifr.setSize( 100 , 100 );
               TestFrame. this .jdp.add(ifr, new  Integer( 5 ));
            }
        });
    }


     public   static   void  main(String argc[]){
        TestFrame f =  new  TestFrame();
        f.setSize( 300 , 300 );
        f.setVisible(true);

        f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

}



...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33476945
Exppp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а тте говорю: сотри каменты, там мало кода останется.

не setVisible() а show()

лучше запихни что надо в JOptionPane.showInternal...
...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33477007
KPIIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
show - deprecated...
...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33478711
Exppp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для JInternalFame нет
...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33478751
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Expppне setVisible() а show()почему?
...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33480358
Exppp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Потому, что люди жалуются, что по
setVisible(true) JInternalFrame (!!! о них речь)
видите на всплывает. Специально для вас глянул
в тот исходник над которым работаю

protected abstract class CreateChildExplorerActn extends AbstractAction {
protected CreateChildExplorerActn(String name) {
super(name);
}
public void actionPerformed(ActionEvent e) {
AbstractExplorer child = createExplorer();

child.firstActivation();
JInternalFrame fr = (JInternalFrame) child.getView();
desktop.add(fr);
fr.reshape(0, 0, 600, 500);
fr.setVisible(true);
try {
fr.setSelected(true);
} catch (PropertyVetoException ex) {
}
}
protected abstract AbstractExplorer createExplorer();
}

примерно то же самое, но более грамотно выполняется
в show().
setVisible() у наследован от JComponent() - только отображает
окно.
В show() кроме fr.setVisible(true); и fr.setSelected(true);
есть вызов moveToFrom();

!!! если isVisible(), то show ничего не делает
поэтому если нужно вдруг поднять окно moveToFrom();

Лично А.Грасоff™у : посмотри пожалуйста мой вопрос по
http://www.sql.ru/forum/actualthread.aspx?tid=183779&pg=3#2205959
...
Рейтинг: 0 / 0
Несколько вопросов по swing
    #33480387
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exppp
Лично А.Грасоff™у : посмотри пожалуйста мой вопрос по
http://www.sql.ru/forum/actualthread.aspx?tid=183779&pg=3#2205959
ниче сказать не могу, со swing'ом практически не работал...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Несколько вопросов по swing
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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