0
在下面的SSCCE中可以看到水平滚动条出现,即使可以使用垂直滚动条也是如此。这只是一个例子。我使用自己的LayoutManager而不是BoxLayout,但是如果你有解决方案,我可以在我自己的LayoutManager中使用它。当垂直滚动条可见时摆动BoxLayout水平滚动条
我已经尝试过实现Scrollable的自定义JPanel,然后覆盖TrackScrollableViewportWidth并返回true,但没有得到我想要的。那时文本在右边被切断了。
另一件事,那不是那么重要,但仍然让我恼火:如果增加窗口的宽度,水平滚动条就会消失,JTextArea的宽度也会增加。但是,如果您减小窗口的宽度,则JTextArea不会相应地调整其宽度。
在此先感谢。这里是SSCCE:
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
public class MyFrame extends JFrame
{
private static final long serialVersionUID = 1L;
public static void main(final String[] args)
{
new MyFrame();
}
private MyFrame()
{
setTitle("Scrollbars and width");
setSize(800, 200);
setResizable(true);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
final JPanel container = new JPanel();
final BoxLayout layout = new BoxLayout(container, BoxLayout.Y_AXIS);
container.setLayout(layout);
final JTextArea area1 = new JTextArea();
area1.setText("1sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf ");
area1.setLineWrap(true);
area1.setWrapStyleWord(true);
area1.setEditable(false);
area1.setForeground(Color.RED);
container.add(area1);
final JTextArea area2 = new JTextArea();
area2.setText("2sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf sdh jsdfk laskdf hdkf hsjdf ");
area2.setLineWrap(true);
area2.setWrapStyleWord(true);
area2.setEditable(false);
area2.setBackground(Color.RED);
container.add(area2);
final JScrollPane scrollbox = new JScrollPane(container);
this.getContentPane().add(scrollbox, BorderLayout.CENTER);
this.getContentPane().invalidate();
this.getContentPane().validate();
}
}