- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要一个像边框布局管理器一样的布局管理器,除了只有一个区域:北。
边框布局管理器的北部区域对我来说工作正常(即占用正确的空间),但是中心占用了所有可用空间(请参见下面的蓝色区域)。理想情况下,我希望中心占据零空间。
这可能吗?
谢谢。
示例 1(共 2 个)(图片)
示例 2(共 2)(代码)
import java.awt.*;
import javax.swing.*;
import javax.swing.text.html.HTMLEditorKit;
public class test
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
JFrame j = new JFrame("Test");
WorkBench right = new WorkBench();
JScrollPane sp
= new JScrollPane(
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
sp.setAutoscrolls(false);
sp.setViewportView(right);
j.getContentPane().add(sp, BorderLayout.CENTER);
right.addPortal(getNewPortalPane());
right.addPortal(getNewPortalPane());
SwingUtilities.invokeLater(new Runnable()
{
public void run() {
sp.getViewport().setViewPosition(new java.awt.Point(0, 0));
}
});
// center the jframe, then make it visible
j.setSize(800, 600);
j.setLocationRelativeTo(null);
j.setVisible(true);
}
});
}
public static JPanel getNewPortalPane()
{
JEditorPane html_box = new JEditorPane();
html_box.setEditorKit(new HTMLEditorKit());
html_box.setOpaque(true);
html_box.setBackground(Color.WHITE);
html_box.setContentType("text/html");
String htmlString = "<html>\n"
+ "<body>\n"
+ "<h1>Welcomfve! sdsdsdsdsd sdsdsd sdsd sdsd sdsd </h1>\n"
+ "<h2>This is an H2 header. sdsdsdsdsd sdsdsd sdsd sdsd sdsd </h2>\n"
+ "<p>This is some sample text sdsdsdsdsd sdsdsd sdsd sdsd sdsd </p>\n"
+ "<p><a href=\"http://dsfsdfdf.com/blog/\">sdfsdfsdf blog</a></p>\n"
+ "</body>\n";
html_box.setText(htmlString);
JPanel p = new JPanel(new BorderLayout());
p.setBackground(Color.blue);
p.add(html_box, BorderLayout.NORTH);
return p;
}
public static class WorkBench extends JPanel implements Scrollable
{
private Box vertical_box = null;
public WorkBench()
{
setLayout(new BorderLayout());
this.vertical_box = Box.createVerticalBox();
add(this.vertical_box , BorderLayout.CENTER);
}
public void addPortal(JPanel portal)
{
this.vertical_box.add(portal);
validate();
}
@Override
public Dimension getPreferredScrollableViewportSize()
{
return getPreferredSize();
}
@Override
public int getScrollableUnitIncrement(
Rectangle visibleRect,
int orientation,
int direction)
{
return 20;
}
@Override
public int getScrollableBlockIncrement(
Rectangle visibleRect,
int orientation,
int direction)
{
return 60;
}
@Override
public boolean getScrollableTracksViewportWidth()
{
return true;
}
@Override
public boolean getScrollableTracksViewportHeight()
{
if (getParent() instanceof JViewport)
{
return (((JViewport)getParent()).getHeight() > getPreferredSize().height);
}
return false;
}
}
}
最佳答案
可能有一个更优雅的解决方案,但我发现有效的是使用 BorderLayout.NORTH
添加内部面板,将内部面板的布局设置为 BoxLayout
> 使用PAGE_AXIS
,然后将组件添加到内部面板。因此,在您的示例中,它将是(编辑以修复滚动条):
public class test {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame j = new JFrame("Test");
WorkBench right = new WorkBench();
final JScrollPane sp = new JScrollPane(
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
sp.setAutoscrolls(false);
sp.setViewportView(right);
j.getContentPane().add(sp, BorderLayout.CENTER);
right.addPortal(getNewPortalPane());
right.addPortal(getNewPortalPane());
SwingUtilities.invokeLater(new Runnable() {
public void run() {
sp.getViewport().setViewPosition(new java.awt.Point(0, 0));
}
});
// center the jframe, then make it visible
j.setSize(800, 600);
j.setLocationRelativeTo(null);
j.setVisible(true);
}
});
}
public static JPanel getNewPortalPane() {
JEditorPane html_box = new JEditorPane();
html_box.setEditorKit(new HTMLEditorKit());
html_box.setOpaque(true);
html_box.setBackground(Color.WHITE);
html_box.setContentType("text/html");
String htmlString = "<html>\n"
+ "<body>\n"
+ "<h1>Welcomfve! sdsdsdsdsd sdsdsd sdsd sdsd sdsd </h1>\n"
+ "<h2>This is an H2 header. sdsdsdsdsd sdsdsd sdsd sdsd sdsd </h2>\n"
+ "<p>This is some sample text sdsdsdsdsd sdsdsd sdsd sdsd sdsd </p>\n"
+ "<p><a href=\"http://dsfsdfdf.com/blog/\">sdfsdfsdf blog</a></p>\n"
+ "</body>\n";
html_box.setText(htmlString);
JPanel p = new JPanel(new BorderLayout());
p.setBackground(Color.blue);
p.add(html_box, BorderLayout.NORTH);
return p;
}
public static class WorkBench extends JPanel implements Scrollable {
private final JPanel inner;
public WorkBench() {
setLayout(new BorderLayout());
inner = new JPanel();
inner.setLayout(new BoxLayout(inner, BoxLayout.PAGE_AXIS));
add(inner, BorderLayout.NORTH);
}
public void addPortal(JPanel portal) {
inner.add(portal);
validate();
}
@Override
public Dimension getPreferredScrollableViewportSize() {
return getPreferredSize();
}
@Override
public int getScrollableUnitIncrement(Rectangle visibleRect,
int orientation, int direction) {
return 20;
}
@Override
public int getScrollableBlockIncrement(Rectangle visibleRect,
int orientation, int direction) {
return 60;
}
@Override
public boolean getScrollableTracksViewportWidth() {
return true;
}
@Override
public boolean getScrollableTracksViewportHeight() {
if (getParent() instanceof JViewport) {
return (((JViewport) getParent()).getHeight() > getPreferredSize().height);
}
return false;
}
}
}
关于Java Swing : Layout Manager like "North" in BorderLayout needed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27313545/
我想知道,如果我的函数没有相似的名称,我是否需要使用命名空间? 另外我无法掌握从特定文件夹导入所有命名空间的方法... 最佳答案 I'm wondering, that if my functions
我运行 2to3 -f all -f idioms -f buffer -f set_literal -f ws_comma foo.py 输出: RefactoringTool: No change
我对 RoR 还是很陌生,我正在尝试使用 button_to delete 按钮删除一个对象。但是,使用我编写的代码,当我尝试将它获取到 destroy 方法的/needs/:id 时,它会将我带到/
当我运行代码时,我在 DEBUG Console 中发现了这个错误如下图所示错误: Restarted application in 2,804ms. [38;5;248m════════ Excep
我有一个实现 __dir__ 方法的类。但是,我并不完全确定 dir API 的一些细节。 A:__dir__ 是否真的需要返回一个列表?我的实现是使用 set 来避免两次列出属性,我需要在返回之前将
我正在尝试执行对非官方 Instagram API python 库的调用,在我修复了几个需要依赖项的错误之后,我被困在了这个错误上。 File "C:\Users\Pablo\Desktop\tx
我正在使用 SingleChildScrollView 和 Column 来显示滑动条和 gridview。 如果我在我的专栏中使用一些其他小部件,如文本、图像,应用程序显示正常。但是我的swiper
我正在尝试卸载 zsh 插件 (macos),我修改了 .zshrc 文件并从 中删除了 macos >plugin 列表,并删除路径 ~/.oh-my-zsh/plugins 中的 macos 文件
我正在尝试卸载 zsh 插件 (macos),我修改了 .zshrc 文件并从 中删除了 macos >plugin 列表,并删除路径 ~/.oh-my-zsh/plugins 中的 macos 文件
Exception caught by rendering library ═════════════════════════════════ RenderBox was not laid out:
我对 Python 很陌生。我正在试用 threading模块。我遇到了 Event对象。 事件对象有wait set clear职能。我了解等待、设置和清除正在做什么。但是我不太明白为什么会有一个单
我需要在 SQL Server 的 sql 查询中转义 [ select * from sometable where name like '[something]'; 我实际上正在寻找某个东西之前的
我的要求是这样的: 我在数据库和时区中保存以毫秒为单位的时间。例如,以毫秒为单位的时间是 1223123123232长时区是 Asia/Calcutta 。我必须将其转换为 Africa/Asmara
我的表中有两个整数列,其中第一列填充了一些随机数,第二列为空。现在是否可以将第一列按升序排序,同时按降序排序并显示为第二列?我有下表的示例。 初始表: col1 col2 5 7 3 9
我正在使用 Instruments 检查我的应用程序的内存泄漏并向我展示: NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ChangeAcc
我有课 class Person { // some other fields for this object std::vector relatives; } 然后是一个返回 Person
在下面的代码中,为什么需要 .page-wrap:after? 理论上,如果没有这个,粘性页脚不应该工作吗?为什么不呢? * { margin: 0; } html, body { heigh
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我看过维基百科的图数据库,还是不明白。 什么是“无索引邻接”? 可不可以理解为“不是把主键存到其他表的行,而是直接存这些行的物理位置” 最佳答案 当您的数据可以表示为图形( map 上的路线、一些树等
我是 AngularJS 的新手,但我真的很喜欢 AngularJS 的工作方式,所以我想将它部署为我的 Google 云端点后端的客户端。然后我立即遇到两个问题: 1、放在哪里myCallback
我是一名优秀的程序员,十分优秀!