JComponent частично скрыт из-за полосы прокрутки в BoxLayout - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу добавить возможность для моих пользователей добавлять комментарии в форму.Чтобы отобразить их, я создал JPanel внутри простой JScrollPane.Я установил макет этой JPanel на BoxLayout, потому что я хотел бы добавить их все только в один столбец, и это казалось самым простым способом - вызвать BoxLayout.Y_AXIS в конструкторе.Я также пробовал GridLayout и GridBagLayout, но это было не то, что я искал.

Моя проблема в том, что, когда JPanel имеет макет BoxLayout, его ширина автоматически равна контейнеру, но мойКонтейнер является JScrollPane, а каретка скрывает правую сторону моего комментария!

A picture is worth a thousand words.

Вы можете увидеть 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>";
...