将JPanel带到java中的其他对象(SWING)前面
发布时间:2020-05-24 15:10:35 所属栏目:Java 来源:互联网
导读:我想在app进程时加载,所以我在JTree上使用了JPanel.但是当用户点击JPanel时,JTree将选择并且JPanel会转到后面.隐藏jpanel之后它再也没有显示出来(我不知道为什么!但它似乎永远不会出现在jtree上). 我需要一种方法来让JPanel前进.我怎样才能做到这一点? 另外
|
我想在app进程时加载,所以我在JTree上使用了JPanel.但是当用户点击JPanel时,JTree将选择并且JPanel会转到后面.隐藏jpanel之后它再也没有显示出来(我不知道为什么!但它似乎永远不会出现在jtree上). 我需要一种方法来让JPanel前进.我怎样才能做到这一点? 另外我必须提到我不想要JDialog.我想使用任何元素的jpanel顶部来显示加载,直到进程完成. 解决方法所以这里至少有两个解决方案.或者选择@Geoff和@sthupahsmaht建议的内容. BTW也可以使用JOptionPane,它会自动为您创建一个对话框.另一种选择是使用框架中的GlassPane. 或者另一个选择是使用JLayeredPane作为@jzd建议. 编辑: 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); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
