Java 如何使JPanel在单击时看起来被推送?

Java 如何使JPanel在单击时看起来被推送?,java,swing,jpanel,mouselistener,Java,Swing,Jpanel,Mouselistener,在JavaSwing中,单击时如何使JPanel看起来压抑/被按下?我已经拥有了所有的 MouseListener 方法,所以在单击面板时,将调用 MousPress < /Cord>,但如何使它具有所选择的外观,例如它被缩进屏幕中? 您应该考虑使用JButt,但回答以下问题: 尝试将MouseStener与BevelOrder一起使用,例如: yourPanel.addMouseListener(new MouseListener() { Border b = new Bev

在JavaSwing中,单击时如何使
JPanel
看起来压抑/被按下?我已经拥有了所有的<代码> MouseListener <代码>方法,所以在单击面板时,将调用<代码> MousPress < /Cord>,但如何使它具有所选择的外观,例如它被缩进屏幕中?

您应该考虑使用JButt,但回答以下问题:



尝试将MouseStener与BevelOrder一起使用,例如:

yourPanel.addMouseListener(new MouseListener() {
        Border b = new BevelBorder(BevelBorder.LOWERED);
        Border originalBorder = null;
        @Override
        public void mouseReleased(MouseEvent e) {
            ((JComponent)e.getComponent()).setBorder(originalBorder);
        }

        @Override
        public void mousePressed(MouseEvent e) {
            originalBorder = ((JComponent)e.getComponent()).getBorder();
            ((JComponent)e.getComponent()).setBorder(b);
        }
        ...
    });
示例: 未单击:


点击:

您需要使用JPanel吗?你能用一个JButton来代替它,让它无论你需要多大都可以吗?如果没有,您可能需要处理
setBackgroundColor()
,即使这样也不会给您“缩进”的外观…请使用合适的工具来完成此工作。如果你想找一个在视觉上表现得像JButton的东西,那么就用JButton。@HoverCraftFullOfels(见鬼,是的!)这应该是一个答案。@AndrewThompson:Dawid已经提到了这一点,并且向他说了1+。我自己的感觉是要求OP改进问题或关闭问题,因为它闻起来像是一个问题,OP问如何解决一个特定的错误代码解决方案,而整个问题的最佳解决方案(没有很好地描述)是完全不同的。@HoverCraftfullOfels,然后问OP他真正想做什么。“您应该考虑使用JButt,但要回答以下问题:“请看我的评论。有些问题最好不要回答。这是其中的一个。也许这种行为是为了某种奇特的效果,而不是我们无法想象的按钮,这就是我决定回答的原因。我同意这个问题非常不完整,闻起来像是一个XY问题,但由于缺乏信息,这很难说。1+用于解决方案尝试。我认为你的答案很好。它提到了两种可能的主要解决方案,并详细介绍了其中一种。干得好。只要边框大小相同,就可以了。我之所以提到它,是因为我以前使用过类似的东西,但最近我看到一些布局使用JPanel borders做了一些奇怪的事情。