因此,这里至少有两个解决方案。要么按照@Geoff和@sthupahsmaht的建议去做。顺便说一句,也可以使用JOptionPane,它会自动为您创建一个对话框。
另一种选择是使用框架中的GlassPane。
或另一个选择是使用@@ zzd建议的JLayeredPane。
编辑: 显示如何使用GlassPane捕获用户选择的示例。请尝试以下步骤:
1.左键单击开始时可见的玻璃窗格。查看输出。
2.右键单击。这将隐藏玻璃窗格。
3.左键单击内容窗格。查看输出。
4.右键单击它。转到第1点。尽情享受。
import java.awt.Color;import java.awt.Dimension;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.Jframe;import javax.swing.JPanel;import javax.swing.SwingUtilities;public class OverPanel extends JPanel{ private static void createAndShowGUI() { final Jframe f = new Jframe(); f.setPreferredSize(new Dimension(400, 300)); f.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); JPanel glassPanel = new JPanel(); glassPanel.setBackground(Color.RED); glassPanel.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { super.mousePressed(e); System.out.println("f.getGlassPane() mousePressed"); if(e.getButton() == MouseEvent.BUTTON3) f.getGlassPane().setVisible(false); } }); f.setGlassPane(glassPanel); f.getContentPane().setBackground(Color.GREEN); f.getContentPane().addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { super.mousePressed(e); System.out.println("f.getContentPane() mousePressed"); if(e.getButton() == MouseEvent.BUTTON3) f.getGlassPane().setVisible(true); } }); f.getGlassPane().setVisible(true); f.pack(); f.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { createAndShowGUI(); } }); }}
EDIT2 :如果您想产生对话框效果,可以通过将这段代码适当地合并到我的示例中来实现。
JPanel panel = new JPanel(new GridLayout(0, 1)); panel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); panel.setBackground(Color.YELLOW); panel.add(new JLabel("I am message Label")); panel.add(new JButton("CLOSE")); JPanel glassPanel = new JPanel(new GridBagLayout()); glassPanel.setOpaque(false); glassPanel.add(panel);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)