0

フレームの上部に JTabbedPane を配置し、タブ付きペインの下に jLogArea を配置してレイアウトを設計しようとしています。

私はこのコードを使用しています:

setLayout(new BorderLayout());

tabbedPane.setSize(WIDTH, HEIGHT);
add(tabbedPane, BorderLayout.PAGE_START);
tabbedPane.add("Tab 0", null);

scrollableTextArea = new JScrollPane(jTextArea);

jTextArea.setEditable(false);
jTextArea.setLineWrap(true);
scrollableTextArea.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollableTextArea.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
add(scrollableTextArea, BorderLayout.PAGE_END);

ただし、この結果、テキスト領域がタブ付きペインの後ろに配置されます。

ここに画像の説明を入力

私が間違っていることと、それを修正する方法を誰かが知っていますか? ありがとう。

編集:明確にするために、テキスト領域がタブ自体ではなく、JTabbedPane の下にあることを探しています。

BorderLayout.NORTHandを使用しBorderLayout.SOUTHても役に立ちません。タブのコンテンツにラベルを追加して、それが違いを生むかどうかを確認しましたが、テキスト領域はまだ遅れています。これはどのように見えるかです:

ここに画像の説明を入力

追加のコード (クラス extends JFrame):

public MainGUI() {
    init();
    pack();
    super.setTitle("test");
}

public void init() {
    setLayout(new BorderLayout());
    setPreferredSize(new Dimension(WIDTH, HEIGHT + TEXT_AREA_HEIGHT));
    setMaximumSize(new Dimension(WIDTH, HEIGHT + TEXT_AREA_HEIGHT));
    setMinimumSize(new Dimension(WIDTH, HEIGHT + TEXT_AREA_HEIGHT));

    tabbedPane = new JTabbedPane();
    textArea = new JTextArea(WIDTH, TEXT_AREA_HEIGHT);
    scrollableTextArea = new JScrollPane(textArea);

    JLabel testLabel = new JLabel("Test!");
    tabbedPane.add("Tab 0", testLabel);

    tabbedPane.setBorder(null);
    tabbedPane.setSize(WIDTH, HEIGHT);
    add(tabbedPane, BorderLayout.NORTH);

    textArea.setEditable(false);
    textArea.setLineWrap(true);
    scrollableTextArea.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    scrollableTextArea.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    add(scrollableTextArea, BorderLayout.SOUTH);

    setDefaultCloseOperation(EXIT_ON_CLOSE);

    setResizable(false);
    setVisible(true);
}
4

2 に答える 2

1

更新
次のようなものを探していると思います:
ここに画像の説明を入力

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;

public class TabSample extends JFrame{
  public void createAndShowGUI() {
    JPanel panel = new JPanel();
    JTextArea ta = new JTextArea(100,50);
    JScrollPane jsp = new JScrollPane(ta);
    JTabbedPane tabbedPane = new JTabbedPane();
    panel.setLayout(new BorderLayout());
    tabbedPane.addTab("Tab one", panel);
    JSplitPane vPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, tabbedPane, jsp);
    getContentPane().add(vPane);
    setSize(400,500);
    vPane.setDividerLocation(getHeight()/2);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
  }

  public static void main(String args[]) 
  {
      javax.swing.SwingUtilities.invokeLater(new Runnable()
      {
          @Override
          public void run()
          {
              TabSample ts = new TabSample();
              ts.createAndShowGUI();
          }
      });
  }
}
于 2013-03-28T17:41:29.760 に答える
0

コードは次のようになります。

setLayout(new BorderLayout());

tabbedPane.setSize(WIDTH, HEIGHT);
add(tabbedPane, BorderLayout.PAGE_START);

scrollableTextArea = new JScrollPane(jTextArea);

jTextArea.setEditable(false);
jTextArea.setLineWrap(true);
scrollableTextArea.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollableTextArea.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
tabbedPane.addTab("Tab 0", scrollableTextArea);

コードの問題は、 を追加しJScrollPaneたのと同じレベルで を追加したことですJTabbedPane。実際にJScrollPaneはタブコンポーネントでなければなりません:

tabbedPane.addTab("Tab 0", scrollableTextArea);

編集:タブ付きペインの下にスクロールペインを配置するには:

...

add(tabbedPane, BorderLayout.NORTH);

...

add(scrollableTextArea, BorderLayout.SOUTH);

これがうまくいくことを願っています。

于 2013-03-28T17:41:40.967 に答える