Paragraph
The Paragraph
widget provides a way to display text content in your terminal user interface. It
allows not only plain text display but also handling text wrapping, alignment, and styling. This
page will delve deeper into the functionality of the Paragraph
widget.
let p = Paragraph::new("Hello, World!");f.render_widget(p, chunks[0]);
Styling and Borders
Section titled “Styling and Borders”You can also apply styles to your text and wrap it with a border:
let p = Paragraph::new("Hello, World!") .style(Style::default().fg(Color::Yellow)) .block( Block::default() .borders(Borders::ALL) .title("Title") .border_type(BorderType::Rounded) );f.render_widget(p, chunks[0]);
Wrapping
Section titled “Wrapping”The Paragraph
widget will wrap the content based on the available width in its containing block.
You can also control the wrapping behavior using the wrap
method:
let p = Paragraph::new("A very long text that might not fit the container...") .wrap(Wrap { trim: true });f.render_widget(p, chunks[0]);
Setting trim
to true
will ensure that trailing whitespaces at the end of each line are removed.
Alignment
Section titled “Alignment”let p = Paragraph::new("Centered Text") .alignment(Alignment::Center);f.render_widget(p, chunks[0]);
Styled Text
Section titled “Styled Text”Paragraph
supports rich text through Span
, Line
, and Text
:
let mut lines = vec![];lines.push(Line::from(vec![ Span::styled("Hello ", Style::default().fg(Color::Yellow)), Span::styled("World", Style::default().fg(Color::Blue).bg(Color::White)),]));lines.push(Line::from(vec![ Span::styled("Goodbye ", Style::default().fg(Color::Yellow)), Span::styled("World", Style::default().fg(Color::Blue).bg(Color::White)),]));let text = Text::from(lines);let p = Paragraph::new(text);f.render_widget(p, chunks[0]);
Scrolling
Section titled “Scrolling”For long content, Paragraph
supports scrolling:
let mut p = Paragraph::new("Lorem ipsum ...") .scroll((1, 0)); // Scroll down by one linef.render_widget(p, chunks[0]);