создание интерфейса таблицы в Java - PullRequest
3 голосов
/ 15 ноября 2010

Как я могу создать интерфейс, подобный следующему в Java (tweetie)?

alt text

Я думал об использовании JTable с одним столбцом и настраиваемой ячейкой с изображением ... хотя я не уверен, как это сделать.

Ответы [ 2 ]

3 голосов
/ 15 ноября 2010

Если у вас будет только один столбец, вы можете просто использовать JList, и это будет немного проще. Но чтобы ответить на ваш вопрос, вам нужно создать средство визуализации ячеек , которое можно использовать для представления объекта в списке. Рендерер будет иметь метод (getListCellRendererComponent), который будет возвращать Component, который можно использовать для представления каждого элемента.

2 голосов
/ 15 ноября 2010

Простейшим способом (я бы это сделал) было бы использовать Вертикаль 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, и вы готовы идти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...