상자 레이아웃이있는 JPanel (a)이 있고 모든 구성 요소가 세로로 쌓여 있습니다. 그 중 가로 상자 레이아웃의 JPanel (b)가 있습니다. 그 JPanel에 (b) 나는 경질 영역 인 JPanel과 JTextArea를 추가했다.JTextArea 및 줄 (단어) 줄 바꿈
JPanel (b)은 JTextArea가 단어 줄 바꾸기로 인해 확장 될 때마다 높이가 증가한다는 것을 알고 싶습니다. 그러나, 처음부터 내 JPanel은 단일 행의 높이를가집니다. 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의 자체 코드가 필요 없다?
LineWrap 및 WrapStyleWord를 true로 설정 했습니까? – MadProgrammer
SSCCE를 보유하고 있습니까? – StanislavL
당신은 그것을 얻지 못합니다. 네, 그렇습니다. 그리고 텍스트가 줄 바꿈 될 것입니다,하지만 JTextArea 자체를 포함하는 컨테이너에 충분한 공간이있는 경우에만 (JPanel (b)). 그러나 컨테이너 크기가 JTextArea의 현재 크기와 일치하며 줄 바꿈이 발생할 때 컨테이너 크기가 확장되기를 원합니다. 그러나 컨테이너가 너무 작기 때문에 절대 발생하지 않습니다. 잠깐, 제 JPanel이 JTextArea 현재 높이로 고정되어 있기 때문에 막히는 JTextArea 자동 크기 조정 기능을 따라 잡기를 바랍니다. –