Dodawanie tekstu do JLabel

0

Witam,
chciałbym się spytać w jaki sposób dodać tekst do JLabel nie zastępując przy tym starej zawartości. Mam kod, który działa w kilku pętlach i zależnie od sytuacji przechodzi do różnych miejsc i gdy miałem to napisane konsolowo to do wypisania używałem po prostu system.out.print i dodatkowy element dodawał się w tej samej linii nie zastępując tego co było już wyświetlone, ale metodą nazwa.setText("ad"), nazwa zostaję nadpisana i jeśli coś wcześniej się tam znajdowało to jest to usuwane i własnie w jaki sposób dopisywać do elementu jlabel kolejne wartości?

Szukałem w googlach, ale pod polskimi frazami nic nie znalazłem. Do tego jestem idiotą i nie umiem angielskiego i znalezienie rozwiązania jest dla mnie ciut trudniejsze, więc z góry przepraszam, za tak banalne pytania. :<

1

zapisz sobie gdzieś z boku aktualny tekst, jaki ma być wyświetlany, dodaj do niego nowy fragment i dopiero wtedy ustaw tekst za pomocą setText. Ewentualnie zamiast JLabel użyj JTextArea - jest tam metoda append.

0

Dzięki już jest git. :-)

A mam jeszcze jedno pytanie, czy istnieje jakaś funkcja, która uniemożliwia na wprowadzenie znaków innych niż cyfry? Działająca na takiej zasadzie, że jak się wciśnie jakiś klawisz z literą to ona nawet nie zostanie wprowadzona do tego inputa?

1

Nie ma, trzeba sobie napisać samemu:

JTextField numbers = new JTextField();
Document doc = numbers.getDocument();
if (doc instanceof AbstractDocument) {
	AbstractDocument aDoc = (AbstractDocument) doc;
	aDoc.setDocumentFilter(new DigitsOnlyFilter());
}
...

class DigitsOnlyFilter extends DocumentFilter {
		
	public void insertString(FilterBypass fb, int offset, String text, AttributeSet attr) throws BadLocationException {
		for (int i = 0; i < text.length(); i++) {
			if (Character.isDigit(text.charAt(i)) == false) {
				return;
			}
		}
		super.insertString(fb, offset, text, attr);			
	}

	public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attr) throws BadLocationException {
		for (int i = 0; i < text.length(); i++) {
			if (Character.isDigit(text.charAt(i)) == false) {
				return;
			}
		}
		super.replace(fb, offset, length, text, attr);
	}
}

lub użyć JFormattedTextField.

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