-2

ボックスレイアウトの JPanel(a) があり、すべてのコンポーネントが垂直に積み重ねられています。その中に、水平ボックス レイアウトの JPanel(b) があります。その JPanel(b) に、リジッド領域、JPanel および JTextArea を追加しました。

私が欲しいのは、JTextArea がワード ラップによって拡張されるたびに JPanel(b) の高さが増加することです。ただし、最初のJPanelの高さは1行です。すべてのスペースが埋まっているため、JTextArea は拡張されません。

これを修正する方法、代替手段はありますか?

JPanel や JTextArea である必要はありません。複数行をサポートするコンポーネントと JTextComponent を含むことができるものであればよいのです。

class Question extends JPanel
{
public JPanel questionArea;
public JTextArea number, question;

public Question(Page page)
{
    setSize(new Dimension(556, 100));
    setBackground(Color.PINK);
    setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));

    Border in = BorderFactory.createDashedBorder(Color.BLACK);
    Border out = BorderFactory.createMatteBorder(0, 0, 10, 0, Color.WHITE);
    setBorder(BorderFactory.createCompoundBorder(out, in));

    questionArea = new JPanel();
    questionArea.setPreferredSize(new Dimension(556, 32));
    questionArea.setBackground(Color.YELLOW);
    questionArea.setLayout(new BoxLayout(questionArea, BoxLayout.LINE_AXIS));

    out = BorderFactory.createMatteBorder(0, 0, 8, 0, Color.WHITE);
    setBorder(BorderFactory.createCompoundBorder(out, in));

    number = new JTextArea();
    number.setPreferredSize(new Dimension(25, 32));
    number.setBackground(Color.GREEN);
    number.setFont(new Font("Arial", Font.BOLD, 15));
    number.setText("10.");
    number.setEditable(false);

    question = new JTextArea();
    question.setPreferredSize(new Dimension(494, 32));
    question.setBackground(Color.PINK);
    question.setFont(new Font("Arial", Font.BOLD, 15));
    question.setText("What is the first question?");

    questionArea.add(Box.createRigidArea(new Dimension(35, 32)));
    questionArea.add(number);
    questionArea.add(question);

    add(questionArea);

    page.editArea.add(this, page.content);
}
}

壊す

class Page extends JPanel
{
public JPanel editArea;
public Box.Filler blank;

public Page(JPanel panel)
{
    setLayout(null);
    setBounds(92, panel.getPreferredSize().height+40, 794, 1123);

    setBackground(Color.WHITE);

    editArea = new JPanel();
    editArea.setLayout(new BoxLayout(editArea, BoxLayout.PAGE_AXIS));
    editArea.setBounds(119, 96, 556, 931);
    editArea.setBackground(Color.LIGHT_GRAY);

    blank = new Box.Filler(new Dimension(556, -1), new Dimension(556, 931), new Dimension(556, 931));
    editArea.add(blank);

    add(editArea);

}
}

ページ クラス自体は null レイアウトの JPanel 上にあり、コードは必要ありませんよね?

4

1 に答える 1

0

BoxLayout水平はあなたをやっていると思います。

コンポーネントを(インスタンス化時に使用して)好みのサイズで表示しますgetPreferredSize()が、簡単にサイズを変更できるとは思いません。Panel(b) を に変更し、コンポーネントを、 、およびにBorderLayout追加することができます。EASTWESTJTextAreaCENTER

于 2012-08-28T09:48:42.333 に答える