SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Java、Swing、Twitter4jを使ってあなただけのTwitterアプリを作成しよう

ステータスの更新、フォロワーのリストの取得などを簡単に実装

  • X ポスト
  • このエントリーをはてなブックマークに追加

最新トレンドを表示する

 サンプルアプリケーションで最後に残った要素は、Twitterの最新トレンドを表示するコンポーネントです。このコンポーネントは、Trendsというテキストを表示するJLabelと、トレンドを表示するJListで構成されます。

import twitter4j.Trends; 
import twitter4j.Twitter;
import twitter4j.TwitterException;
import javax.swing.*; 
import java.awt.*; 
 
public class TrendsPanel extends JPanel {
   Twitter twitter;
   int componentsWidth = 180;
   public TrendsPanel(Twitter twitter) throws TwitterException 
   { 
      super(new FlowLayout());
      this.setSize(new Dimension(componentsWidth, 220));
      this.setPreferredSize(new Dimension(componentsWidth, 220));
      JLabel trendsLabel = new JLabel("Trends");
      trendsLabel.setSize(new Dimension(componentsWidth, 20));
      trendsLabel.setPreferredSize(new Dimension(componentsWidth, 20));
      Trends trends = twitter.getTrends();
      String trendsArr[] = new String[trends.getTrends().length];
      for (int i = 0; i < trends.getTrends().length; i++) {
          trendsArr[i] = trends.getTrends()[i].getName();
      } 
      JList trendsList = new JList(trendsArr);
      trendsList.setSize(new Dimension(componentsWidth, 200));
      trendsList.setPreferredSize(new Dimension(componentsWidth, 200));
      this.add(trendsLabel);
      this.add(trendsList); 
   } 
}

 ここでもTrendsPanelはJPanelを継承し、フローレイアウトを使用し、twitter.getTrends()メソッドの呼び出しで問題が起きた場合にTwitterExceptionをスローします。getTrendsメソッドは、1つのTrendsオブジェクトを返します("Trends"が複数形になっていることに注目してください)。TrendクラスのgetTrends()メソッドは、Trendオブジェクトの配列を返します(こちらは単数形の"Trend"です)。検索されたつぶやきを取得するコードと似た手順で、trendsArrという文字列配列を作成し、forループ内でtrends.getTrends()[i].getName()メソッドを呼び出して各トレンドを取得し、この配列に埋め込みます。メソッド呼び出しの"i"は、forループのインデックス値です。このトレンド配列をJListに渡します。画面の表示はこのようになります。

図9 最新トレンドパネル
図9 最新トレンドパネル

全体を組み立てる

 これですべてのクラスが定義されました。後はmainクラスを作成し、すべてのコンポーネントを1つにまとめるだけです。

import twitter4j.*;
  
import javax.swing.*;
import java.awt.*;
import java.net.MalformedURLException;

public class Application extends JFrame {
    public Application() throws MalformedURLException, TwitterException {
        super("Simple Twitter App");
        getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS));

        LoginDialog login = new LoginDialog();
        String userName = login.getUserName();
        String password = login.getPassword();

        Twitter twitter = new Twitter(userName, password);

        add(new FollowerPanel(twitter));
        add((new StatusTimeLine(twitter)).getTimeLinePanel());
        add(new RightSideBar(twitter));
    }

    public static void main(String[] args) throws MalformedURLException, TwitterException {
        Application application = new Application();
        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        application.setSize(Toolkit.getDefaultToolkit().getScreenSize());
        application.setVisible(true);

    }
}

 Applicationクラスは、JFrameを拡張し、MalformedURLExceptionとTwitterExceptionをスローします。今回はボックスレイアウトを採用して、FollowerPanelStatusTimeLine、およびRightSideBarの3つのメインコンポーネントを配置します。冒頭で触れた要求事項に従って、LoginDialogを最初に作成します。ここからユーザー名とパスワードを取得し、これらを引数としてトップレベルのTwitterオブジェクトをインスタンス化します。

 mainでは、Applicationインスタンスを作成し、終了時のデフォルトクローズ操作を用意し、ウィンドウが最大化されて表示されるようにします。万事順調なら、コンパイルして実行するとログインダイアログが表示されます。

まとめ

 お気づきとは思いますが、このアプリケーションはTwitter Webサイトでできることの半分しか実行できません。Twitterサイトを置き換えることが目的ではなく、独創を加えて機能を拡張するための土台として作ったからです。たとえば、最新の更新を自動的に表示するとか、Twitter4j APIを使って統計データを収集し、それをSQLデータベースに保存するとか、あるいは極端な例を挙げれば、Twitter情報を小さなサイドバーに追加するWebアプリケーションを作成するようなことも可能です。

 すでに多数のTwitterアプリケーションが、Web向けに留まらず、iPhoneなどのモバイルプラットフォーム向けにも提供されています。この記事を書くためのリサーチ中に面白いアプリケーションを見つけました。つぶやきを検索するhttp://asktwitr.com※編集部注)です。他のTwitter検索アプリケーションとは違って、つぶやいた人の居場所をGoogle地図に表示するのがユニークです。

 皆さんもいろいろアイデアを工夫して、次のキラーアプリになるようなアプリケーションを作成してみてください。

 2009年9月17日の時点で、http://asktwitr.com

 Twitter検索サービスは利用できませんでした。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Cesar Otero(Cesar Otero)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4409 2009/10/07 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング