我在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));
没有任何点击的主屏幕。
单击OFFSET CENTER按钮,面板显示。
如果我将鼠标悬停在面板后面的按钮上,它们就会出现在前面。但我已经将面板移到了前面。我应该为按钮或面板设置一些属性开/关吗?
答案 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);