加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何通知用户JTabbedPane中的特定Tab需要注意?

发布时间:2020-12-14 05:55:25 所属栏目:Java 来源:网络整理
导读:假设您有一个包含五个或更多选项卡的用户界面,并且您需要通知用户选项卡“2”需要注意. 有没有办法做到这一点?例如,使标签闪烁橙色,或更改标签的颜色?我没有成功使用requestFocus. 编辑:我也有兴趣知道如果可能的话,如何强制关注选项卡2. 解决方法 您可以
假设您有一个包含五个或更多选项卡的用户界面,并且您需要通知用户选项卡“2”需要注意.

有没有办法做到这一点?例如,使标签闪烁橙色,或更改标签的颜色?我没有成功使用requestFocus.

编辑:我也有兴趣知道如果可能的话,如何强制关注选项卡2.

解决方法

您可以通过使用某个计时器更改选项卡位置处的窗格的背景和前景来实现此目的.只需在某个时间间隔内更改它,它就会闪烁.这是一个演示:
JFrame frame = new JFrame();
    frame.setSize(400,400);
    frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);

    final JTabbedPane pane = new JTabbedPane();

    JPanel jPanel = new JPanel();
    JButton button = new JButton("Blink tab");
    jPanel.add(button);
    pane.addTab("adsad",jPanel);

    JPanel jPanel1 = new JPanel();
    jPanel1.add(new JLabel("hi"));
    pane.addTab("werqr",jPanel1);

    final Color defaultBackColor = pane.getBackgroundAt(1); // default background color of tab
    final Color defaultForeColor = pane.getForegroundAt(1); // default foreground color of tab

    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            Timer timer = new Timer(500,new ActionListener() {
                boolean blinkFlag = false;
                @Override
                public void actionPerformed(ActionEvent e) {
                    blink(blinkFlag);
                    blinkFlag = !blinkFlag;
                }
            });
            timer.start();
        }
        private void blink(boolean blinkFlag) {
            if (blinkFlag) {
                pane.setForegroundAt(1,Color.green);
                pane.setBackgroundAt(1,Color.orange);
            } else {
                pane.setForegroundAt(1,defaultForeColor);
                pane.setBackgroundAt(1,defaultBackColor);
            }
            pane.repaint();
        }
    });

    frame.add(pane);
    frame.setVisible(true);

这里1是要闪烁的选项卡索引.停止闪烁停止计时器并将前景色和背景色设置为默认值.

I am also interested in knowing how to force the focus on tab 2 if it
is possible.

如果要将焦点转移到该选项卡,可以使用setSelectedIndex(int index)方法.

编辑:-

正如@perp在评论中说的那样(我也测试了它并且他是对的)这对于WindowDefault以外的外观和感觉都不起作用.但前景色(文字颜色)仍然会闪烁.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读