由于BoxLayout中的滚动窗格,JComponent被部分隐藏了

时间:2018-09-20 07:28:30

标签: java swing layout-manager boxlayout

我想为我的用户增加在表单上添加评论的可能性。为了显示它们,我在一个简单的JScrollPane中创建了JPanel。我将此JPanel的布局设置为BoxLayout,因为我只希望将它们全部添加到一列中,这似乎是在构造函数中调用BoxLayout.Y_AXIS的最简单方法。我也尝试过GridLayoutGridBagLayout,但这不是我想要的。

我的问题是,当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();
}

如您所见,我尝试使用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>";

0 个答案:

没有答案