ここから本文です

java swing 下記コードにスクロールを追加したいのですがわかりません。 apiを見...

アバター

ID非公開さん

2019/8/2601:29:39

java swing
下記コードにスクロールを追加したいのですがわかりません。
apiを見ても知識不足のためかスクロール画面が出てきてもパネルを覆ってしまいます。

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.Color;

class Scroll extends JFrame{
JLabel label1;
JLabel label2;
JPanel panel;
public static void main(String args[]){
Scroll frame = new Scroll("タイトル");
frame.setVisible(true);
}

Scroll(String title){
setTitle(title);
setBounds(100, 100, 300, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

panel = new JPanel();
panel.setBackground(Color.GREEN);

label1 = new JLabel("テスト");
label2 = new JLabel();
label2.setText("test");

panel.add(label1);
panel.add(label2);


Container contentPane = getContentPane();
contentPane.add(panel, BorderLayout.CENTER);
}
}

閲覧数:
23
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

NyanCatさん

2019/8/2623:41:30

Java Swing懐かしいですね20年ぶりくらいに見ました。
ちなみに最近のJavaではswingは廃止になって JavaFXが推奨になったそうですよ。

質問のJScrollPaneの使い方ですが、
JPanelにJLabelをたくさん入れて、
JScrollPaneにそのPanelを入れて、
JFrameのContainerにJScrollPaneを入れると期待通りに動作するかと思います。

改修したサンプルコードです。


import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.Color;

class Scroll extends JFrame{
JLabel label1;
JLabel label2;
JPanel panel;
public static void main(String args[]){
Scroll frame = new Scroll("タイトル");
frame.setVisible(true);
}

Scroll(String title){
setTitle(title);
setBounds(100, 100, 300, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

panel = new JPanel();
panel.setBackground(Color.GREEN);

for(int i=0; i< 100; i++) {
label1 = new JLabel("テスト");
panel.add(label1);
}
JScrollPane spanel = new JScrollPane(panel);
Container contentPane = getContentPane();
contentPane.add(spanel, BorderLayout.CENTER);
}
}

  • この返信は取り消されました。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜1件/1件中

mzg********さん

2019/8/2622:14:30

JScrollPane は、内部にスクロール表示したいJPanelなどのインスタンスを入れて、JScrollPaneのインスタンスをJFrameのcontentPaneにaddすることで実現できます。
// 記載クラス( extends JFrame)のコンストラクター内一部抜粋
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
label1 = new JLabel("テスト");
panel.add(label1,BorderLayout.CENTER);
panel.setPreferredSize(new Dimension(1000,1000) );
/* 内部コンポーネント(JPanel)の preferedSize が外側(ここではJFrame内部contentPane)より大きいとスクロール表示する。 */

JScrollPane scrollpane = new JScrollPane(panel);
/* default は、windowが十分大きければバー非表示 */
getContentPane().add(scrollpane);

土台となる JFrameのContentPaneの上に、JScrollPane の枠を載っけて、さらにその枠のなかに JPanel を載っけて、JPanel内に JLabelなどこまごまコンポーネントを載せていくという手順です。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる