Я хочу добавить возможность для моих пользователей добавлять комментарии в форму.Чтобы отобразить их, я создал JPanel внутри простой JScrollPane.Я установил макет этой 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();
}
Как вы можете видеть, я пытался откорректировать размер в html, используя style='width:280px'
, и в JLabel, используя label.setSize(280, 200);
, но ни один из них не работал.
Есть ли у вас какие-либо идеи о том, как я могу изменить размер этого Jlabel?
РЕДАКТИРОВАТЬ:
Я добавил свойство margin-right
в div
, чтобы я мог по крайней мере полностью увидетьтекст в JLabel, но правая граница все еще скрыта.
String formattedComment = "<html><br><div style='width:280px;margin-right:50px;'>" +
txtArCommentaire.getText().replaceAll("\n", "<br>") +
"</div><br></html>";