6

5 つ以上のタブを持つユーザー インターフェイスがあり、タブ "2" に注意が必要であることをユーザーに通知する必要があるとします。

これを行う方法はありますか?たとえば、タブをオレンジ色に点滅させたり、タブの色を変更したりしますか? 私はrequestFocusで成功していません。

編集:可能であれば、タブ 2 にフォーカスを強制する方法も知りたいです。

4

2 に答える 2

6

これは、タイマーを使用してタブの位置でペインの背景と前景を変更することで実現できます。一定の間隔で変更するだけで、点滅しているように見えます。これのデモは次のとおりです。

    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点滅させたいタブインデックスはこちらです。タイマーの点滅を停止し、前景色と背景色をデフォルトに設定します。


可能であれば、タブ2にフォーカスを強制する方法も知りたいです。

そのタブにフォーカスを移したい場合は、setSelectedIndex(int index)メソッドを使用できます。


編集:-

コメントで@perpが言ったように(私もテストしましたが、彼は正しいです)、これはWindowDefault以外のルックアンドフィールでは機能しません。ただし、前景色(テキストの色)は引き続き点滅します。

于 2011-08-06T09:18:07.203 に答える
2

http://download.oracle.com/javase/tutorial/uiswing/components/tabbedpane.htmlを見るとicon、 注意が必要なタブを示すために を使用できます。

于 2011-08-06T09:03:46.190 に答える