フォロワーを表示する
サンプルアプリケーションには、3つのメインパネルがあります。1つのパネルにはフォロワーのリストを表示します。2番目のパネルには本人のつぶやきを表示し、これを更新していきます。最後のパネルには、つぶやきを検索する機能とダイレクトメッセージを送る機能を用意します。フォロワー表示パネルのコードを以下のリストに示します。
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
import javax.swing.*;
import java.net.URL;
import java.awt.*;
public class FollowerPanel extends JPanel {
URL imageUrl;
int panelWidth = 250;
int panelHeight = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
java.util.List<User> followers;
JLabel followerName;
JLabel followerImg;
JPanel followerPanel;
JLabel followerTitleLabel;
JScrollPane followerJScrollPane;
public FollowerPanel(Twitter twitter) throws TwitterException {
followers = twitter.getFollowers();
this.setLayout(new GridLayout(1, followers.size()));
this.setSize(panelWidth, panelHeight);
this.setPreferredSize(new Dimension(panelWidth, panelHeight));
this.setMinimumSize(new Dimension(panelWidth, panelHeight));
followerPanel = new JPanel();
followerPanel.setLayout(new GridLayout(followers.size(), 1, 0, 0));
followerPanel.setSize(panelWidth, panelHeight);
followerPanel.setPreferredSize(new Dimension(panelWidth, panelHeight));
followerPanel.setMinimumSize(new Dimension(panelWidth, panelHeight));
int subPanelHeight = 50;
for (User u : followers) {
imageUrl = u.getProfileImageURL();
followerName = new JLabel(u.getName());
followerImg = new JLabel(new ImageIcon(imageUrl));
followerImg.setSize(50, 50);
followerImg.setPreferredSize(new Dimension(50, subPanelHeight));
followerImg.setMaximumSize(new Dimension(50, subPanelHeight));
JPanel thisFollowerPanel = new JPanel(new GridLayout(1, 2));
thisFollowerPanel.add(followerName);
thisFollowerPanel.add(followerImg);
followerPanel.add(thisFollowerPanel);
}
followerJScrollPane = new JScrollPane(followerPanel,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, // 垂直バー
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
this.add(followerJScrollPane);
}
}
このコンストラクタは1つのTwitter型の引数を常に受け取り、TwitterException例外をスローします。最初にtwitter.getFollowers()メソッドを呼び出すことで、twitter4j.User型のListを取得します。このユーザーリストに対して反復処理を行い、getProfileImageURL()メソッドを呼び出して各ユーザーの画像がある場所を確認し、getName()メソッドを呼び出してユーザー名を取得します。実際の画像のバイトデータを取得するのではなく、URLを取得することに注意してください。新規のImageIconを作成するには、URLがあれば十分です。
FollowerPanelクラスはJPanelを継承します。フォロワーの画像と表示名が両方あると便利なので、JPanelにフォロワーの名前を示すJLabelを作成し、フォロワーの表示画像を収めるImageIconを作成します。
各フォロワーのJPanelの位置決めにはGridLayoutを使用し、これを先ほどのJPanelにネストします。JPanelはJScrollBar内に配置します。次にJScrollBarをインスタンスに追加します。これもです。完成したパネルは図3のようになります。

