Diskuze: JavaFX - Jak zjistiti číslo aktuálního řádku v TextArea
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Pozice kurzoru se dá zjistit metodou getCaretPosition().
Příklad:
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import javax.swing.text.BadLocationException;
public class TextAreaPositionDemo {
public static void main(String[] args) {
final JFrame frame = new JFrame();
final JTextArea textArea = new JTextArea();
textArea.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent event) {
int caretPosition = textArea.getCaretPosition();
try {
int line = textArea.getLineOfOffset(caretPosition);
int column = caretPosition - textArea.getLineStartOffset(line);
frame.setTitle((line + 1) + " : " + (column + 1));
} catch (BadLocationException e) {
}
}
});
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
frame.setMinimumSize(new Dimension(200, 200));
frame.setLocationRelativeTo(null);
frame.add(scrollPane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Hezký kód, ale ptal se na FX, nebo ne?
no jde, ale je to čuňárna. cca 3 měsíce zpátky jsem se na to tady ptal, a David Čápka mi na to odpověděl - https://www.itnetwork.cz/…9fc49b9e2ab5
Tak nápad nakonec přeci jen přišel. Řešeno teda přes listener na caretu.
@FXML
private void AktualRad(){
getTxtAreaVych().caretPositionProperty().addListener((observable, oldValue, newValue) -> {{
String radek[] = getTxtAreaVych().getText(0, newValue.intValue()).replaceAll(""," ").split("\n");
aktualRadek.setText("Řádek číslo: "+radek.length);
}
});
}
Zobrazeno 6 zpráv z 6.