0

私は少しSwingを学ぼうとしていて、14.46.2.AddコンポーネントをJScrollPaneの例にしようとしています。コードは次のとおりです。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension; 
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.border.LineBorder;

public class AddingToJScrollPane {

public static void main(String args[]) {
  JFrame frame = new JFrame("Tabbed Pane Sample");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  JLabel label = new JLabel("Label");
  label.setPreferredSize(new Dimension(1000, 1000));
  JScrollPane jScrollPane = new JScrollPane(label);

  JButton jButton1 = new JButton();

  jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
  jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
  jScrollPane.setViewportBorder(new LineBorder(Color.RED));
  jScrollPane.getViewport().add(jButton1, null);

  frame.add(jScrollPane, BorderLayout.CENTER);
  frame.setSize(400, 150);
  frame.setVisible(true);
 }
}

このページから、期待される結果を確認できます。

ここに画像の説明を入力

ただし、そのコードをコピーして貼り付けるだけで、下の画像の結果が得られます。例が古くなっているのか、それとも例の画像が間違っているのかを理解しようとしています (チュートリアル画像の赤い境界線はどこにありますか?)。さらに、スクロールバーが有効になっていると思っているのに有効になっていません。それらを有効にするために何か不足していますか(チュートリアルでは問題ありません)?私はJDK7を使用しています。

ここに画像の説明を入力

4

2 に答える 2

3

赤い境界線が表示されても問題ありません。これは次の行が原因です。

jScrollPane.setViewportBorder(new LineBorder(Color.RED));

背景情報として、コンポーネントに色付きの線の境界線を設定することは、Swingでのデバッグの可能性に役立つことに注意する必要があります(そうしないと、あるコンポーネントがどこで終了し、別のコンポーネントがどこで開始するかがわかりにくいことがよくあります)。スクリーンショットを撮った後、コードからこの行を削除するのを忘れました。

ところで、Swingを学びたい場合、最高のオンラインリソースは「公式」リソースです:http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html

編集:スクロールバーは有効になっています。「グレー表示」されているわけではありません。矢印をクリックすると視覚的に変化します。ボタンは常に表示領域のサイズにサイズ変更されるため、スクロールするものはありません。私が言ったように、これは良い例ではありません、ここから学ばないでください...

于 2013-01-06T21:33:23.977 に答える
1

コードは大丈夫で、ボーダーは赤です

jScrollPane.setViewportBorder(new LineBorder(Color.RED));

リンクの画像が間違っています

于 2013-01-06T21:29:04.907 に答える