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

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

ただいまの
回答率

92.06%

  • Java

    7657questions

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

  • sublimetext

    129questions

    SublimeTextとは、オーストラリアのSublime HQ Pty Ltdが提供しているテキストエディターのことです。Mac/Windows/Linuxでの利用が可能で、柔軟にカスタマイズできたり、多くの言語に対応していくこともあり、海外や日本国内でも人気のあるエディターです。

  • デザイン

    60questions

    プログラミングでのデザインとは、プログラムの構成や、使用の信頼性・持続性・正確性・利便性の目標達成にはどうするのがベストなのか特定の選択を行うことです。

  • JFrame

    7questions

    JFrameはJFC/Swingフレームワークのコンポーネントであり、トップレベルのコンテナです。

javaのGUIでスクロールバーがでない

解決済

回答 1

投稿 2016/12/14 14:22 ・編集 2016/12/14 14:39

  • 評価
  • クリップ 0
  • VIEW 159

usagityan

score 24

どうがんばってもスクロールバーがでません
しかも警告がでる、なんででしょう
泣いています
たすけてください
女子大生です
泣いています

該当のソースコード

import java.io.*;
import java.lang.*;
import javax.swing.*;
import java.awt.*; //レイアウトマネージャに必要なパッケージ

public class ColorChoice extends JFrame {

//colorList
JList colorList;
JScrollPane scroll;

//JPanel
JPanel colorBar = new JPanel();

public ColorChoice() {

//colorBar
String[] colors = new String[]{"red","blue","green","yellow","pink","white","black","brown","purple","violet"};
colorList = new JList(colors);
colorBar.setLayout(new BorderLayout());
colorBar.add(colorList, BorderLayout.CENTER);
scroll = new JScrollPane(colorList);
colorBar.add(scroll);

getContentPane().setLayout(new BorderLayout());
getContentPane().add((他オブジェクト), BorderLayout.NORTH);
getContentPane().add(colorList, BorderLayout.CENTER);
getContentPane().add((他オブジェクト), BorderLayout.SOUTH);

setTitle("ブラウザ");
setSize(400,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String[] args) {
new ColorChoice();
}

}

試したこと

最初はcolorBar(JPanel)を入れてなかったのですが、
colorList.add(scroll)でスクロールバーがでなかったのでJPanelに貼り付けたけどだめだった

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

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

    クリップした質問はマイページの「クリップ」タブからいつでも見ることができます。

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正の依頼

  • KSwordOfHaste

    2016/12/14 14:56

    「泣いています たすけてください 女子大生です」ここに質問しているわけですから困っていることは分かっています。余分な言葉は無駄なので省きましょう。関係の有無を区別して論理的に思考する。それがプログラマーの心得です。

    キャンセル

  • usagityan

    2016/12/14 14:57

    ありがとうございます。なみだがとまりました。

    キャンセル

  • KSwordOfHaste

    2016/12/14 14:59

    助けになったなら幸いです。

    キャンセル

回答 1

checkベストアンサー

0

コンポーネント階層を作るコードが乱れてます。コンポーネント階層は木構造(JFrameを唯一の親とした循環のない有向グラフ)なので特定のコンポーネントの親は一つしかありません(Aの子供でもありBの子供でもあるようなコンポーネントは存在できません)。コードでは同じコンポーネント(colorList)を違う親(colorBar, scroll, contentPane)に対して何度もaddする結果になってます。このようなことをすると最後にaddしたときの親がコンポーネントの親になります。つまりcolorListの親はcontentPaneになります。

colorBar.add(colorList, BorderLayout.CENTER);
=> colorBarの子供がcolorList (1)

scroll = new JScrollPane(colorList); 
=> scrollの子供がcolorList (2)

colorBar.add(scroll);
=> colorBarの子供がscroll (3)

getContentPane().add(colorList, BorderLayout.CENTER); 
=> メインパネルの子供がcolorList (4)

以上によって作られる階層

JFrame(ColorChoice)
  +-> メインパネル(ColorChoice.contentPane)
        +-> JList(colorList)

正しい階層は
JFrame(ColorChoice)
  +-> メインパネル(ColorChoice.contentPane)
        +-> JScrollPane(scroll)
              +-> JList(colorList)
(colorBarは不必要)

コンポーネント階層を作るときのコツですがなるべく階層構造の順番に作るとよいと思います。例えば下位から上位へ向けて作成するなら

  1. JListを作成
  2. JScrollPaneを作成(引数にJListを指定するのが簡単ですね)
  3. JFrameのcontentPaneへJScrollPaneをadd

投稿 2016/12/14 14:53

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

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

ただいまの回答率

92.06%

関連した質問

  • 解決済

    java スクロールバーの配置について

    画像を傾けて表示させるプログラムを作成しました 続けてフレームの右と下にスクロールバーを配置させたいのですがどうすればよいのかがわかりません。よろしくお願いします。 impor

  • 解決済

    ボタンを動的に作る方法

    ブックマークを管理するGUIアプリをSwingで作ろうとしています。 まずJsonで管理しようと思いJsonにサイト情報を追加するコードを作りました。 それからGUI部分を作ろうと

  • 解決済

    Swing じゃんけんゲーム

    swingを用いてじゃんけんゲームを作っています。 以前質問させていただいたKeyEventはわかったのですが、それをプログラムになおすときにどのように繋げたらいいのかわかりません

  • 解決済

    レイアウト

    レイアウトについてわからない点があるので質問させていただきます。 コード     JPanel panel1;     JLabel label1;     JButton b

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

  • Java

    7657questions

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

  • sublimetext

    129questions

    SublimeTextとは、オーストラリアのSublime HQ Pty Ltdが提供しているテキストエディターのことです。Mac/Windows/Linuxでの利用が可能で、柔軟にカスタマイズできたり、多くの言語に対応していくこともあり、海外や日本国内でも人気のあるエディターです。

  • デザイン

    60questions

    プログラミングでのデザインとは、プログラムの構成や、使用の信頼性・持続性・正確性・利便性の目標達成にはどうするのがベストなのか特定の選択を行うことです。

  • JFrame

    7questions

    JFrameはJFC/Swingフレームワークのコンポーネントであり、トップレベルのコンテナです。

閲覧数の多いJavaの質問