5 개 이상의 탭이있는 사용자 인터페이스가 있고 탭 "2"에주의가 필요하다는 것을 사용자에게 알려야한다고 가정 해보십시오.JTabbedPane의 특정 Tab에주의가 필요함을 사용자에게 알리는 방법은 무엇입니까?
이 방법이 있습니까? 예를 들어 탭을 주황색으로 깜박이거나 탭의 색상을 변경 하시겠습니까? requestFocus로 성공하지 못했습니다.
편집 : 또한 가능한 경우 탭 2에 집중하는 방법을 알고 싶습니다.
5 개 이상의 탭이있는 사용자 인터페이스가 있고 탭 "2"에주의가 필요하다는 것을 사용자에게 알려야한다고 가정 해보십시오.JTabbedPane의 특정 Tab에주의가 필요함을 사용자에게 알리는 방법은 무엇입니까?
이 방법이 있습니까? 예를 들어 탭을 주황색으로 깜박이거나 탭의 색상을 변경 하시겠습니까? 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
당신이 깜박 할 탭 인덱스 : 다음은이에 대한 데모입니다. 깜박임을 멈추고 타이머를 멈추고 전면 및 배경색을 기본값으로 설정하십시오.
나는 또한 가능한 경우 탭 2에 초점을 강제하는 방법을 아는에 관심이 있어요.
해당 탭으로 포커스를 전송하려면 setSelectedIndex(int index)
메서드를 사용할 수 있습니다.
편집 : - 코멘트에 @perp가 말했듯이
(도 나는 그것을 테스트 한 그는 권리)이이 모양을 위해 일을하고 WindowDefault 이외 느끼지 않을 것입니다. 그러나 전경색 (텍스트 색)은 여전히 깜박입니다.
http://download.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html에서 보면 icon
을 사용하여주의가 필요한 탭을 나타낼 수 있습니다.
나쁘지는 않지만 여전히 달성 할 수있는 대안을 찾고 있습니다. 더 좋은 방법이 없다면 이것을 답으로 표시하겠습니다. – David
스킨이 적용된 Windows 룩앤필 (Windows 클래식 테마가 아닌)을 사용하는 경우 배경색을 변경해도 아무런 변화가 없습니다. WindowsTabbedPaneUI는 탭 상단에 사용자 정의 스킨을 칠해 배경색이 설정되어있는 곳을 효과적으로 숨 깁니다. 따라서 텍스트 색상은 여전히 깜박이지만 해결책은 완전히 모양과 느낌을 통해 이식성이 없습니다. – perp
@Prep : 나는 다른 모양과 느낌으로 그것을 테스트하지 않았으므로 그것을 인식하지 못했습니다. 그것을 지적 주셔서 감사합니다. 답변을 업데이트했습니다. –
좋은 답변입니다. 감사! – David