質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.54%

  • Java

    15565questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Twitter

    777questions

    Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

プログラミング初心者ですTwitterクライアントを作っているものです

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 519
退会済みユーザー

退会済みユーザー

JavaでTwitterクライアントを作ってるんですがGUIでうまくいかず困っています。

import java.awt.EventQueue;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.EmptyBorder;

import twitter4j.ResponseList;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.User;

public class TwitterClientGUI extends JFrame {

    private JPanel contentPane;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    TwitterClientGUI frame = new TwitterClientGUI();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     * @throws IOException
     * @throws TwitterException
     */
    JLabel  lblTweets [];

    public TwitterClientGUI() throws IOException, TwitterException {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 764);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

        contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));

        JPanel panel = new JPanel();
        contentPane.add(panel);

        JLabel lblTweet1 = new JLabel("Tewwt1");
        panel.add(lblTweet1);

        JPanel panel_1 = new JPanel();
        contentPane.add(panel_1);

        JLabel lblTweet2 = new JLabel("Tweet2");
        panel_1.add(lblTweet2);

        JPanel panel_2 = new JPanel();
        contentPane.add(panel_2);

        JLabel lblTweet3 = new JLabel("Tweet3");
        panel_2.add(lblTweet3);

        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        scrollPane.setViewportView(contentPane);

        setContentPane(scrollPane);

         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String tweet = "";
            while(tweet.isEmpty()) {
                System.out.print("今何してる ? : ");
                tweet = br.readLine();
                if(tweet.length() > 140) {
                    System.out.println("字数制限を超えています。");
                    tweet = "";
                    continue;

                }

            }

        // TODO 自動生成されたメソッド・スタブ
            Twitter twitter = new TwitterFactory().getInstance();
         Status status = null;
        try {
            status = twitter.updateStatus(tweet);
        } catch (TwitterException e1) {
            // TODO 自動生成された catch ブロック
            e1.printStackTrace();
        }
         User user = twitter.verifyCredentials();


         try{
             //ツイートを表示
              System.out.println(status.getUser().getScreenName() + " として投稿しました : " + status.getText());
             }catch(Exception e){
                 System.out.print(e);
             }
             //TLの表示
             try {
                 //TLの取得
                 ResponseList<Status> homeTl = twitter.getHomeTimeline();
                String tubuyaki [] = new String[homeTl.size()];

                int i = 0;


                lblTweets = new JLabel[3];
               lblTweets[0] = lblTweet1;
                lblTweets[1] = lblTweet2;
                lblTweets[2] = lblTweet3;







                 for (Status status1 : homeTl) {
                     //つぶやきのユーザーIDの取得
                     String userName = status1.getUser().getScreenName();
                     //つぶやきの取得
                     String tweet1 = status1.getText();
                    lblTweets[i].setText("ユーザーID:" + userName + "\r\n" + "tweet:" + tweet1);
                 }


             } catch (TwitterException e) {
                 e.printStackTrace();

             }
    }

}

現状の問題は
TLをJlabelでTLを表示できたが最後に取得したツイートしか表示されない

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • MasashiKimura

    2017/01/17 17:08

    エラーの内容を書いていただけますか?

    キャンセル

  • 退会済みユーザー

    2017/01/17 22:53

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • 退会済みユーザー

    退会済みユーザー

    2017/01/18 11:14

    すいません少しいじってたらエラーは消えたのですがラベルに最後に取得したツイートしか表示できなくて今度はそこでつまずいてます

    キャンセル

回答 1

0

                 for (Status status1 : homeTl) {
                     //つぶやきのユーザーIDの取得
                     String userName = status1.getUser().getScreenName();
                     //つぶやきの取得
                     String tweet1 = status1.getText();
                    lblTweets[i].setText("ユーザーID:" + userName + "\r\n" + "tweet:" + tweet1);
                 }

lblTweets[i]でiがインクリメントされていないから初期値である0番目だけ更新されてます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Java

    15565questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Twitter

    777questions

    Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。