Как установить позицию на стеклянную панель в JFrame и JPanel

Я хочу показать стекло поверх моего JFrame. Я мог бы это сделать, и теперь моя проблема в том, что стекло видно в верхнем левом углу. Я хочу знать, как установить положение стеклянной панели, как я хочу (заданное местоположение в JFrame или JPanel в JFrame). Я попытался установить местоположение, используя setPostion(x,y); и setBounds(x,y,w,h); Но это не увенчалось успехом. Я использую Netbeans. Вот мой код, как показать стекло.

public void showPanelMy(){

    javax.swing.JList jList1;
    javax.swing.JPanel jPanel1;
    javax.swing.JScrollPane jScrollPane1;

    jPanel1 = new javax.swing.JPanel();
    jScrollPane1 = new javax.swing.JScrollPane();
    jList1 = new javax.swing.JList();
    JPanel g=(JPanel)myJFrame.getGlassPane();
    g.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
    setMaximumSize(new java.awt.Dimension(100, 100));
    g.setBackground(new java.awt.Color(204, 92, 92));

    g.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

    jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
    jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

    jList1.setModel(new javax.swing.AbstractListModel() {....}
    });
    jScrollPane1.setViewportView(jList1);
    jPanel1.add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 120, 120));

    g.add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 140, 140));}

Это мой тестовый код. Здесь я помещаю JList и несколько панелей на стекло. Пожалуйста, скажите мне, как установить положение на стеклянную панель. Спасибо


person Débora    schedule 18.09.2011    source источник
comment
Я не вижу никакого стекла в коде, который вы разместили. Пожалуйста, опубликуйте весь код или лучше SSCCE.   -  person Heisenbug    schedule 18.09.2011
comment
JPanel g=(JPanel)myJFrame.getGlassPane(); :)   -  person Débora    schedule 18.09.2011


Ответы (1)


В порядке. Я постараюсь дать ответ, даже если вы не разместили весь соответствующий код.

Я предполагаю, что "g" - это компонент, который вы хотите использовать как GlassPane. Вам не нужно добавлять другие компоненты в саму стеклянную панель, вместо этого выстраивайте иерархию компонентов, как вы обычно это делаете без стеклянной панели. Затем добавьте стеклянную панель в рамку с помощью setGlassPane() JFrame.

Вот хороший учебник.

person Heisenbug    schedule 18.09.2011
comment
Лучше всего давать ссылку на последнюю версию JavaDocs. Я отредактировал ваш ответ, указав на J2SE 7. Советы по получению ссылки на последние документы см. в разделе пункт 2 преимуществ. - person Andrew Thompson; 18.09.2011
comment
Большое спасибо Heisenbug. Я попробовал то, что вы упомянули. Я устанавливаю свойства компонента там, где они должны быть. Тогда все в порядке :) - person Débora; 18.09.2011
comment
и отличный обходной путь от @camickr tips4java.wordpress.com/?s=glass+pane +1 - person mKorbel; 18.09.2011