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]);