JLayeredPane中的面板显示了它背后的按钮

时间:2014-05-26 12:31:12

标签: java swing jpanel jlayeredpane

我在JLayeredPane上有一些按钮,面板。

当我点击一个按钮时,面板会以setvisible(true)显示。但如果面板后面有一个按钮,我将鼠标悬停在按钮按钮面板上。

我正在使用JLayeredPane移动面板。

当我点击按钮显示面板时会发生这种情况。

   private void jbOffCenActionPerformed(java.awt.event.ActionEvent evt) {                                        
    if(!offsetedilmis)
    {
    jPOffsetSor.setVisible(true);
    KHLayered.moveToFront(jPOffsetSor);
    offsetedilmis = true;
    jbOffCen.setText("<html><center>RESET<br>CENTRE");
    }
    else if(offsetedilmis)
    {
    jbOffCen.setText("<html><center>OFFSET<br>CENTRE");
    offsetedilmis = true;
    }
}  
是的,我正在使用netbeans&#39;设计师。

自动生成代码以将面板添加到JLayeredPanel:

KHLayered.add(jPOffsetSor, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 250, 450, 150));

没有任何点击的主屏幕。 First

单击OFFSET CENTER按钮,面板显示。 Second

如果我将鼠标悬停在面板后面的按钮上,它们就会出现在前面。但我已经将面板移到了前面。我应该为按钮或面板设置一些属性开/关吗? third

2 个答案:

答案 0 :(得分:1)

您可以尝试使用dialogue window,而不是使用Jpanel来显示消息。

对于此示例,您可以使用(尝试此代码,但它可能包含错误):

Object[] options = {"<html><center>RESET<br>CENTRE",
                "<html><center>OFFSET<br>CENTRE"};
int n = JOptionPane.showOptionDialog(frame,
"Left click...", // the title of the window
"Pop-up window", // the meassage in the window
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, 
options,  //the titles of buttons
options[0]); 

您还有很多其他选择。你可以在api或我之前提供的网站上探索它。

它更简单,因为您不需要具有actionperformed方法!

干得好!

答案 1 :(得分:0)

<强> ANSWER

将面板图层设置为POPUP_LAYER或MODAL_LAYER可解决问题。

 KHLayered.setLayer(jPManOverSil, javax.swing.JLayeredPane.MODAL_LAYER);