Простейшим способом (я бы это сделал) было бы использовать Вертикаль BoxLayout
на JPanel
. Каждый твит будет тогда его собственным JPanel
(TweetPanel extends JPanel
) с BorderLayout
, где изображение находится на ЗАПАДЕ, а текст твита находится в ЦЕНТРЕ.
Вот как я мог бы выложить одну из панелей ресторана.
public ResturantPanel extends JPanel {
public ResturantPanel(String name, String address, List<String> reviews, Icon icon){
setLayout(new BorderLayout());
JLabel iconLabel = new JLabel(theIcon);
JLabel nameLabel = new JLabel(name);
JLabel addressLabel = new JLabel(address);
JPanel southReviewPanel = new JPanel();
southReviewPanel.setLayout(new BoxLayout(southReviewPanel, BoxLayout.Y_AXIS);
for (String review: reviews) {
southReviewPanel.add(new JTextArea(review));
}
add(southReviewPanel);
add(iconLabel, BorderLayout.West);
JPanel northPane = new JPanel();
northPane.setLayout(new BoxLayout(northPane, BoxLayout.Y_AXIS));
northPane.add(nameLabel);
northPane.add(addressLabel);
add(northPane, BorderLayout.North);
}
}
Обратите внимание, это было полностью написано в этом окне редактора. Это будет иметь некоторые опечатки. Кроме того, вам придется поиграть с размером иконки, текстовыми областями, добавленными к southReviewPanel
и southReviewPanel
, чтобы получить все, как вы хотите, чтобы он выглядел.
Затем вы поместите их на JPanel
в JScrollPane
, и вы готовы идти.