如何在不固定大小的情况下防止 JScrollPane 通过其 JTextArea 增长?
How to prevent JScrollPane grow by its JTextArea without make it fixed size?
我正在尝试使用 TabbedPane 编写公寓管理程序,我创建了一个 class 扩展 JPanel 和 GroupLayout 并将其添加到我的 TabbedPane。我在这个 class 中有两个 JTextAreas,我把它们放在 JScrollPanes 中。
当我写的很长的时候,他们的ScrollPanes会水平增长,我该如何防止。
我尝试添加 textarea.setLineWrap(true);
行,它解决了我的问题,但它产生了一个新问题;我无法自动调整它们的大小我的 ScrollPanes。所以它们变成固定大小。
JTextArea diger = new JTextArea();
JScrollPane digerS = new JScrollPane(diger);
JTextArea rapor = new JTextArea();
JScrollPane raporS = new JScrollPane(rapor);
layout.setHorizontalGroup(layout.createSequentialGroup()
.addGap(5)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
.addComponent(kisiBilgileri)
.addComponent(daireBilgileri)
.addComponent(iletisimBilgileri)
.addComponent(_diger, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE)
.addComponent(digerS, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE) //textarea1's scrollpane
)
.addGap(5)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
.addComponent(ara, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE)
.addComponent(daireSec, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE)
.addComponent(kaydet, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE)
.addComponent(sil, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE)
.addComponent(_rapor, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE)
.addComponent(raporS, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE) //textarea2's scrollpane
.addGroup(layout.createSequentialGroup()
.addComponent(aidatAy)
.addGap(5)
.addComponent(aidatEvDurumu)
)
.addComponent(aidatTuru)
.addGroup(layout.createSequentialGroup()
.addComponent(aidatMiktar)
.addGap(5)
.addComponent(aidatOde)
)
)
.addGap(5)
);
我的程序如下所示:
JTextArea diger = new JTextArea();
当你像上面那样创建一个 JTextArea 时,文本区域不知道如何调整自己的大小,所以它可能会随着文本的大小而改变 added/removed(取决于所使用的布局管理器,我不知道GroupLayout 的工作原理)。
相反,你应该使用类似的东西:
JTextArea diger = new JTextArea(5, 20);
建议文本区域的行数和列数。现在文本区域可以确定自己的首选大小,布局管理器可以使用此信息。
请注意,这同样适用于 JTextField,只是您只能指定列。
我正在尝试使用 TabbedPane 编写公寓管理程序,我创建了一个 class 扩展 JPanel 和 GroupLayout 并将其添加到我的 TabbedPane。我在这个 class 中有两个 JTextAreas,我把它们放在 JScrollPanes 中。
当我写的很长的时候,他们的ScrollPanes会水平增长,我该如何防止。
我尝试添加 textarea.setLineWrap(true);
行,它解决了我的问题,但它产生了一个新问题;我无法自动调整它们的大小我的 ScrollPanes。所以它们变成固定大小。
JTextArea diger = new JTextArea();
JScrollPane digerS = new JScrollPane(diger);
JTextArea rapor = new JTextArea();
JScrollPane raporS = new JScrollPane(rapor);
layout.setHorizontalGroup(layout.createSequentialGroup()
.addGap(5)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
.addComponent(kisiBilgileri)
.addComponent(daireBilgileri)
.addComponent(iletisimBilgileri)
.addComponent(_diger, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE)
.addComponent(digerS, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE) //textarea1's scrollpane
)
.addGap(5)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
.addComponent(ara, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE)
.addComponent(daireSec, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE)
.addComponent(kaydet, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE)
.addComponent(sil, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE)
.addComponent(_rapor, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE)
.addComponent(raporS, 0, GroupLayout.DEFAULT_SIZE, Integer.MAX_VALUE) //textarea2's scrollpane
.addGroup(layout.createSequentialGroup()
.addComponent(aidatAy)
.addGap(5)
.addComponent(aidatEvDurumu)
)
.addComponent(aidatTuru)
.addGroup(layout.createSequentialGroup()
.addComponent(aidatMiktar)
.addGap(5)
.addComponent(aidatOde)
)
)
.addGap(5)
);
我的程序如下所示:
JTextArea diger = new JTextArea();
当你像上面那样创建一个 JTextArea 时,文本区域不知道如何调整自己的大小,所以它可能会随着文本的大小而改变 added/removed(取决于所使用的布局管理器,我不知道GroupLayout 的工作原理)。
相反,你应该使用类似的东西:
JTextArea diger = new JTextArea(5, 20);
建议文本区域的行数和列数。现在文本区域可以确定自己的首选大小,布局管理器可以使用此信息。
请注意,这同样适用于 JTextField,只是您只能指定列。