Я не знаю ни о каком другом, кроме как некрасивого HTML-подхода:
label.setText("<html>some <u>underlined</u> text</html>");
Однако помните, что если вы предоставите пользовательский внешний вид, HTML-рендеринг может перестать работать должным образом.
Другим способом было бы добавить MatteBorder к метке, но это «подчеркивает» всю метку:
label.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK));