我想为我的用户增加在表单上添加评论的可能性。为了显示它们,我在一个简单的JScrollPane中创建了JPanel。我将此JPanel的布局设置为BoxLayout
,因为我只希望将它们全部添加到一列中,这似乎是在构造函数中调用BoxLayout.Y_AXIS
的最简单方法。我也尝试过GridLayout
和GridBagLayout
,但这不是我想要的。
我的问题是,当JPanel具有BoxLayout布局时,其宽度自动与其容器相同,但是我的容器是JScrollPane,并且插入符号隐藏了我的注释的右侧!
您可以在左下方看到JTextField和一个JButton,这是click事件的代码:
private void btnAjoutCommentaireActionPerformed(java.awt.event.ActionEvent evt) {
//I take the text from the JTextField and format it to html
String formattedComment = "<html><br><div style='width:280px;'>" +
txtArCommentaire.getText().replaceAll("\n", "<br>") +
"</div><br></html>";
JLabel label = new JLabel(formattedComment);
//I add a blue border
label.setBorder(new TitledBorder(new EtchedBorder(Color.lightGray, Color.blue), ConfigUser.getCu().toString()));
//this below doesn't work
label.setSize(280, 200);
//I tried adding a JPanel in between but it didn't really worked out
//JPanel panel = new JPanel();
//panel.setLayout(new GridLayout(1, 1));
//panel.setSize(297, 200);
//panel.add(label);
///pnlCommentaire is the JPanel inside the JScrollPane
pnlCommentaire.setLayout(new BoxLayout(pnlCommentaire, BoxLayout.Y_AXIS));
pnlCommentaire.add(label);
pnlCommentaire.revalidate();
pnlCommentaire.repaint();
}
如您所见,我尝试使用style='width:280px'
在html中调整大小,并尝试使用label.setSize(280, 200);
在JLabel上调整大小,但没有一个起作用。
您是否知道如何调整此Jlabel的大小?
编辑:
我向margin-right
添加了一个div
属性,以便至少可以完全看到JLabel中的文本,但是右边框仍然被隐藏。
String formattedComment = "<html><br><div style='width:280px;margin-right:50px;'>" +
txtArCommentaire.getText().replaceAll("\n", "<br>") +
"</div><br></html>";