为了账号安全,请及时绑定邮箱和手机立即绑定

更改了其中一个侦听器适合可见性的JPanel

更改了其中一个侦听器适合可见性的JPanel

拉莫斯之舞 2019-12-04 10:52:02
是否有一些规则,或好/坏的经验AncestorListener,ComponentListener或HierarchyListener听与变化的知名度JPanel和JComponents?其中一个比其他更好或更安全吗?我特别想知道何时JPanel/ 如何JComponent隐藏/ 。请注意,以下代码包含不正确的Swing规则,例如Thread.sleep(int)在这种情况下使用,以允许我Listeners在Swing GUI中打印出正确的顺序import java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.event.ComponentEvent;import java.awt.event.ComponentListener;import java.awt.event.HierarchyEvent;import java.awt.event.HierarchyListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.event.AncestorEvent;import javax.swing.event.AncestorListener;public class CardlayoutTest extends JFrame {    private static final long serialVersionUID = 1L;    public CardLayout card = new CardLayout();    public CardlayoutTest() {        JPanel pnlA = new JPanel(new BorderLayout());        pnlA.add(new JButton("A"), BorderLayout.CENTER);        JPanel pnlB = new JPanel(new BorderLayout());        pnlB.add(new JButton("B"), BorderLayout.CENTER);        JPanel pnlC = new JPanel(new BorderLayout());        pnlC.add(new JButton("C"), BorderLayout.CENTER);        setDefaultCloseOperation(EXIT_ON_CLOSE);        setLayout(card);        add(pnlA, "A");        add(pnlB, "B");        add(pnlC, "C");        pnlA.addAncestorListener(new EventHandler());        pnlB.addAncestorListener(new EventHandler());        pnlC.addAncestorListener(new EventHandler());        pnlA.addHierarchyListener(new EventHandler());        pnlB.addHierarchyListener(new EventHandler());        pnlB.addHierarchyListener(new EventHandler());        pnlA.addComponentListener(new EventHandler());        pnlB.addComponentListener(new EventHandler());        pnlB.addComponentListener(new EventHandler());    }    class EventHandler implements AncestorListener, ComponentListener, HierarchyListener {        @Override        public void ancestorAdded(AncestorEvent event) {            System.out.println("CardlayoutTest.EventHandler.ancestorAdded()");        }
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

如果更改是通过“ setVisible(false)”方法进行的,请使用ComponentListener或ComponentAdapter。在“ componentHidden”中,您将收到隐藏组件的通知(称为“ setVisible(false)”),在“ componentShown”中,则显示该组件(称为“ setVisible(true)”)

查看完整回答
反对 回复 2019-12-04
  • 2 回答
  • 0 关注
  • 507 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信