【问题标题】:Panel in JLayeredPane shows buttons behind of itJLayeredPane 中的面板在其后面显示按钮
【发布时间】:2014-05-26 12:31:11
【问题描述】:

我在 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 的设计器。

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

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

主屏幕无需任何点击。

单击“偏移中心”按钮并显示面板。

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

【问题讨论】:

  • 为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。

标签: java swing jpanel jlayeredpane


【解决方案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 或者我之前给的网站中探索一下。

这要简单得多,因为您不需要有执行操作的方法!

干得好!

【讨论】:

【解决方案2】:

回答

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 2023-01-11
    • 2012-10-05
    • 2016-05-25
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多