JScrollPane 随机显示内容失败
JScrollPane randomly fails to display contents
我的 JScrollPane 有问题。它会随机选择显示或不显示。有两个测试区域,每个区域都在它们自己的滚动窗格中。需要注意的一件事是,如果我调整 JFrame 的大小,它将变得可见。当它 运行s 时,第一个框或第二个框可能不可见。 40% 的时间框 2 可见但 1 不可见。30% 的时间框 1 可见但不可见 2。20% 的时间两个框都可见。 10% 的时间两个框都不可见。这些是粗略的数字,但似乎总体上很接近。我多次 运行 程序,无论是否重新编译,结果都会改变,即使代码没有。我在有和没有布局管理器的情况下都尝试过,结果是一样的。我想避免像 "You MUST use a layout manager or pixies will cut out your eyes" 这样的评论。我最后有一个 "frame.repaint();" 。这是代码摘录。
JTextArea area1 = new JTextArea( );
area1.setFont(new Font("Serif", Font.BOLD, 18));
area1.setText("1");
area1.setVisible( true );
JScrollPane scroll1;
scroll1 = new JScrollPane(area1);
scroll1.setLocation( 1, 1 );
scroll1.setSize( (frame.getSize().width / 2) - 2 , frame.getSize().height - 40 );
area1.repaint();
scroll1.revalidate();
scroll1.repaint();
scroll1.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
scroll1.setVisible( true );
frame.add(scroll1);
我尝试了太多,记不清了,我在网上找到的东西。如果我改用 "JScrollPane scroll1 = new JScrollPane(area1);",结果是一样的。如果我使用 "scroll1.add(area1);" 而不将其添加到构造函数中,它将永远不会显示滚动窗格的内容。我也试过将它设置为 visible false 添加它然后使其可见,结果是一样的。在这一点上,我不知道为什么会这样,更重要的是 运行 之间的结果会有所不同。你知道他们怎么说精神错乱...
有谁知道如何解决这个问题?
这是来自 运行 之一的照片。
将 frame.setVisible(true);
放在代码的末尾,在 frame.add(scroll1)
之后。这对我总是有效。
我的 JScrollPane 有问题。它会随机选择显示或不显示。有两个测试区域,每个区域都在它们自己的滚动窗格中。需要注意的一件事是,如果我调整 JFrame 的大小,它将变得可见。当它 运行s 时,第一个框或第二个框可能不可见。 40% 的时间框 2 可见但 1 不可见。30% 的时间框 1 可见但不可见 2。20% 的时间两个框都可见。 10% 的时间两个框都不可见。这些是粗略的数字,但似乎总体上很接近。我多次 运行 程序,无论是否重新编译,结果都会改变,即使代码没有。我在有和没有布局管理器的情况下都尝试过,结果是一样的。我想避免像 "You MUST use a layout manager or pixies will cut out your eyes" 这样的评论。我最后有一个 "frame.repaint();" 。这是代码摘录。
JTextArea area1 = new JTextArea( );
area1.setFont(new Font("Serif", Font.BOLD, 18));
area1.setText("1");
area1.setVisible( true );
JScrollPane scroll1;
scroll1 = new JScrollPane(area1);
scroll1.setLocation( 1, 1 );
scroll1.setSize( (frame.getSize().width / 2) - 2 , frame.getSize().height - 40 );
area1.repaint();
scroll1.revalidate();
scroll1.repaint();
scroll1.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
scroll1.setVisible( true );
frame.add(scroll1);
我尝试了太多,记不清了,我在网上找到的东西。如果我改用 "JScrollPane scroll1 = new JScrollPane(area1);",结果是一样的。如果我使用 "scroll1.add(area1);" 而不将其添加到构造函数中,它将永远不会显示滚动窗格的内容。我也试过将它设置为 visible false 添加它然后使其可见,结果是一样的。在这一点上,我不知道为什么会这样,更重要的是 运行 之间的结果会有所不同。你知道他们怎么说精神错乱...
有谁知道如何解决这个问题? 这是来自 运行 之一的照片。
将 frame.setVisible(true);
放在代码的末尾,在 frame.add(scroll1)
之后。这对我总是有效。