【发布时间】:2015-05-08 07:34:01
【问题描述】:
当我运行这个程序时,我在标签上看不到滚动条。我错过了什么?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Util1
{
public static void main(String[] args)
{
new Util1();
}
public Util1()
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new ExamplePane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
protected class ExamplePane extends JPanel
{
public ExamplePane()
{
final JPanel panel = new JPanel(new GridBagLayout());
final JLabel message = new JLabel("<html>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello</html>");
message.setPreferredSize(new Dimension(500, 50));
JScrollPane scroller = new JScrollPane( message, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroller.setViewportView(message);
panel.add(scroller);
add(panel);
}
}
}
【问题讨论】:
-
这个
message.setPreferredSize是一个糟糕的开始 -
更改布局管理器。我取出
panel,将ExamplePane的布局管理器设置为BorderLayout -
我想是 html 造成的。也许这里的第一个答案有帮助:stackoverflow.com/questions/9335138/…
-
@MadProgrammer - 删除 setPreferredSize 并没有改变任何东西。
-
@MadProgrammer - ScrollPanes 在 GridbagLayout 中是否不可用。我已从更大的代码中缩小了此代码的范围 - 无法更改为 BorderLayout
标签: java swing jscrollpane jlabel