我是Java Swing的新手,对下一个代码感到困惑。
我的目标是制作带有 2个JTextPane的 垂直可滚动面板
。具有父面板固定宽度70%的第一个JTextPane和具有固定宽度30%的第二个JTextPane。因为这两个JTextPane具有固定的宽度,所以它们只能在垂直方向上扩展更多文本。
我使用此解决方案,因为我只想为此2个JTextPane使用一个滚动条。
我的初始化代码:
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 616, 374);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout(0, 0));
JScrollPane scrollPane = new JScrollPane();
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
frame.getContentPane().add(scrollPane);
JPanel panel = new JPanel();
scrollPane.setViewportView(panel);
SpringLayout sl_panel = new SpringLayout();
panel.setLayout(sl_panel);
JTextPane leftTextPane = new JTextPane();
sl_panel.putConstraint(SpringLayout.NORTH, leftTextPane, 10, SpringLayout.NORTH, panel);
sl_panel.putConstraint(SpringLayout.WEST, leftTextPane, 10, SpringLayout.WEST, panel);
panel.add(leftTextPane);
JTextPane rightTextPane = new JTextPane();
sl_panel.putConstraint(SpringLayout.NORTH, rightTextPane, 10, SpringLayout.NORTH, panel);
sl_panel.putConstraint(SpringLayout.WEST, rightTextPane, 10, SpringLayout.EAST, leftTextPane);
sl_panel.putConstraint(SpringLayout.EAST, rightTextPane, -10, SpringLayout.EAST, panel);
panel.add(rightTextPane);
scrollPane.addComponentListener(new ComponentAdapter()
{
public void componentResized(ComponentEvent evt) {
sl_panel.putConstraint(SpringLayout.EAST, leftTextPane, (int)(scrollPane.getWidth() * 0.7), SpringLayout.WEST, (Component)(evt.getSource()));
}
});
}
JTextPane(s)对SOUTH没有任何限制,因此它们可以通过这种方式长大。
问题:
问题在于,滚动窗格将以其首选大小显示组件,然后根据需要添加滚动条。
在您的情况下,您希望宽度受滚动窗格的视口限制。
因此,您需要Scrollable
在添加到视口的组件上实现接口。该Scrollable
界面将允许您强制组件宽度匹配视口的宽度,从而限制每个JTextPane的宽度,从而导致文本换行。
实现此功能的一种简单方法是使用Scrollable
Panel
。此类实现Scrollable接口,并允许您使用参数覆盖Scrollable方法。
因此,基本代码为:
ScrollablePanel panel = new ScrollablePanel( new BorderLayout());
panel.setScrollableWidth( ScrollablePanel.ScrollableSizeHint.FIT );
第一个JTextPane的父面板固定宽度为70%,第二个JTextPane的固定宽度为30%
一种方法是使用JSplitPane,以便在两个文本窗格之间有一个分隔符,并且文本不会合并为一个。
JSplitPane splitPane = new JSplitPane();
splitPane.setLeftComponent(new JTextPane());
splitPane.setRightComponent(new JTextPane());
splitPane.setResizeWeight(0.7);
splitPane.setDividerLocation(.7);
然后,您只需将所有内容添加到框架中:
panel.add(splitPane);
frame.add(new JScrollPane(panel), BorderLayout.CENTER);
现在,分隔符的位置将保持在70%,并且在调整框架大小时,文本窗格将增加/缩小。
我是Java Swing的新手,我对下一个代码感到困惑。 null
问题内容: 在无序列表中: 允许添加class或style属性,但不允许填充文本以及添加或更改标签。 该页面正在使用Courier New呈现。 目标是在跨度后排列文本。 “ OR”的理由并不重要。 懒惰的动物文字可能包含在其他元素中,但我必须仔细检查。 问题答案: ul { 就像Eoin所说的那样,您需要在“空”跨度中放置一个不间断的空格,但是您不能为内联元素分配宽度,只能填充/边距,因此您需要
问题内容: 我有两个div容器。 虽然其中一个需要为特定宽度,但我需要对其进行调整,以便另一个div占用其余空间。有什么办法可以做到吗? 问题答案: HTML: CSS: 您也可以使用这样做,这通常是一种更好的方法:如何将输入元素与其标签放在同一行?
问题内容: 许多人仍然使用表格来布局控件,数据等。-流行的jqGrid就是一个例子。但是,发生了一些我似乎无法理解的魔术(它的桌子大声喊叫,可能会有多少魔术?) 如何设置表的列宽并使它像jqGrid那样遵守!?如果我尝试复制此内容,即使我设置了every ,只要这些单元格之一的内容大于20px,该单元格就会展开! 有什么想法或见解吗? 问题答案: 您可以尝试对所有行使用标签管理表样式,但是您需要在
问题内容: 简单方案: 我需要为设置一个固定宽度。我试过了: 也 对于 乃至 但是的宽度仍然相同。 问题答案: 对于Bootstrap 4.0: 在Bootstrap4.0.0中,您不能可靠地使用这些类(在Firefox中有效,但在Chrome中不适用)。您需要使用OhadR的答案: 对于Bootstrap 3.0: 在twitter bootstrap 3中使用:其中*是宽度的列数。 对于Boo
问题内容: 我有两个div容器。 尽管一个需要为特定宽度,但我需要对其进行调整,以便另一个div占用其余空间。有什么办法可以做到吗? 问题答案: 请参阅: http : //jsfiddle.net/SpSjL/ (调整浏览器的宽度) HTML: CSS: 您也可以使用这样做,这通常是一种更好的方法:如何将输入元素与其标签放在同一行?