JScrollPane zmiana obramowania.

0

Witam.

Mam JFrama, a tam 2x JScrollPane z JTextArea w środku i JTextField osobno. Próbuję zrobić tak, żeby po złapaniu focusu przez komponent jego ramka zmieniała się, a po utracie wracała do normy. Napisałem taką klasę obsługi zdarzenia:

class BorderOnFocus implements FocusListener {
		private final Border BLUE = BorderFactory.createLineBorder(Color.blue);
		private final Border DEFAULT = BorderFactory.createEtchedBorder();
		
		@Override
		public void focusGained(FocusEvent e) {
			JComponent tmp = (JComponent)e.getSource();
			if(tmp instanceof JTextField) {
				tmp.setBorder(BLUE);
			} else {
				if(tmp == sourceText) {
					sourceScrollPane.setBorder(BLUE);
				} else {
					destinationScrollPane.setBorder(BLUE);
				}
			}
		}

		@Override
		public void focusLost(FocusEvent e) {
			JComponent tmp = (JComponent)e.getSource();
			if(tmp instanceof JTextField) {
				tmp.setBorder(DEFAULT);
			} else {
				if(tmp == sourceText) {
					sourceScrollPane.setBorder(DEFAULT);
				} else {
					destinationScrollPane.setBorder(DEFAULT);
				}
			}
		}

Jednak po utracie fokusu przez TextArea(nawet pustym) pojawia mi się scrollBar. Jak to zmienić?

0

Dobra już sobie poradziłem.

private final Border DEFAULT = sourceScrollPane.getBorder();

:-D

1 użytkowników online, w tym zalogowanych: 0, gości: 1