2011-08-06 3 views
6

5 개 이상의 탭이있는 사용자 인터페이스가 있고 탭 "2"에주의가 필요하다는 것을 사용자에게 알려야한다고 가정 해보십시오.JTabbedPane의 특정 Tab에주의가 필요함을 사용자에게 알리는 방법은 무엇입니까?

이 방법이 있습니까? 예를 들어 탭을 주황색으로 깜박이거나 탭의 색상을 변경 하시겠습니까? requestFocus로 성공하지 못했습니다.

편집 : 또한 가능한 경우 탭 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 이외 느끼지 않을 것입니다. 그러나 전경색 (텍스트 색)은 여전히 ​​깜박입니다.

+0

스킨이 적용된 Windows 룩앤필 (Windows 클래식 테마가 아닌)을 사용하는 경우 배경색을 변경해도 아무런 변화가 없습니다. WindowsTabbedPaneUI는 탭 상단에 사용자 정의 스킨을 칠해 배경색이 설정되어있는 곳을 효과적으로 숨 깁니다. 따라서 텍스트 색상은 여전히 ​​깜박이지만 해결책은 완전히 모양과 느낌을 통해 이식성이 없습니다. – perp

+0

@Prep : 나는 다른 모양과 느낌으로 그것을 테스트하지 않았으므로 그것을 인식하지 못했습니다. 그것을 지적 주셔서 감사합니다. 답변을 업데이트했습니다. –

+0

좋은 답변입니다. 감사! – David

관련 문제