java - JScrollPane 中的 JTextArea 换行但缺少字母

标签 java swing jscrollpane jtextarea joptionpane

我想用一些 JTextAreaJLabel 制作一个 JOptionPane.showOptionDialog。 问题是对话框太小,我没有找到任何解决方案,所以我决定将我的内容放在 JScrollPane 中。

我看到我必须将我所有的 JTextArea 和我的 JLabel 放在 JPanel 中,因为将它们添加到 JScrollPane连续不允许我正确放置视口(viewport)。

最后一个问题是我的 JTextArea 正确地换行了单词,但是当我有 2 或 3 个字母长度的单词时,它们被滚动条隐藏了。

中南合作:

public class myTest extends JFrame
{
        public static void main(String[] args)
        {
            new myTest();
        }
        public myTest()
        {
            String myLongString="Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?";
            String aLittleString="I am a poor little string which is placed at the bottom of a JOptionPane.";
            String[] options = {"OK","NO"}; 

            JLabel titre1 = new JLabel("Title"); 
            JLabel titre2 = new JLabel("Title 2");

            Map<TextAttribute,Integer> attributs = new HashMap<TextAttribute, Integer>();
            attributs.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
            Font police = new Font("Serif", Font.BOLD, 12).deriveFont(attributs); 

            titre1.setFont(police);
            titre2.setFont(police);

            JTextArea text3 = new JTextArea(myLongString,5,75); 
            text3.setLineWrap(true);
            text3.setWrapStyleWord(true);
            text3.setEditable(false);
            Color back = this.getBackground();
            text3.setBackground(back);
            JTextArea text = new JTextArea(myLongString,5,75); 
            text.setLineWrap(true);
            text.setWrapStyleWord(true);
            text.setEditable(false);
            text.setBackground(back);

            JTextArea text2 = new JTextArea(aLittleString,5,75); 
            text2.setLineWrap(true);
            text2.setWrapStyleWord(true);
            text2.setEditable(false);
            text2.setBackground(back);
            JPanel bas = new JPanel(new BorderLayout());
            JPanel basbas = new JPanel(new BorderLayout());

            bas.add(titre1,BorderLayout.NORTH);
            bas.add(text,BorderLayout.CENTER);
            basbas.add(titre2,BorderLayout.NORTH);
            basbas.add(text2,BorderLayout.CENTER);
            basbas.add(text3,BorderLayout.SOUTH);
            bas.add(basbas,BorderLayout.SOUTH);

            JScrollPane js = new JScrollPane(bas);
            js.setBorder(null);
            js.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
            js.setViewportView(bas);
            JLabel lMessage = new JLabel("A message."); 

            Object[] params = {js,lMessage}; 

            int n = JOptionPane.showOptionDialog(new JFrame(),
                    params,
                    "my dialog", 
                    JOptionPane.YES_NO_OPTION,
                    JOptionPane.QUESTION_MESSAGE,
                    null, 
                    options, 
                    options[0]); 

        }
    }

我看了几个主题,但他们总是在谈论 setWrapStyleWord。 我禁用了水平滚动条,因为我不想要它,事实上我不想要 2 个字母越位的滚动条。

在我看来,问题是我用 JPanel 构造了滚动条,但我没有找到其他解决方案。

也欢迎对我的帖子或我的英语提出任何反馈。

最佳答案

将我的评论作为答案。请尽量提供一个Empty Border到您要添加 JScrollPaneJPanel,或者您可以将一个 EmptyBorder 添加到您的 JTextArea

关于java - JScrollPane 中的 JTextArea 换行但缺少字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11016041/

相关文章:

java - 在 Flume 生命周期中使用 Spring AMQP onMessage() 方法

java - 自定义单元测试结果

java - JTextPane 输出奇怪的控制台字符

java - JTextPane 中未呈现 CSS 填充

java - 是否可以混合 Eclipse 项目类型?

Java - 如何获取与 HashMap 中的字符串关联的整数

java - 根据 JPanel 内部的组件调整其大小

java - JTextPane 自动滚动只能运行一次

java - 如何在 Java 中使 JFrame 可滚动?

java - JScrollPane 中的 JList