所以,我正在制作一种文本编辑器,我需要一个用于垂直导航的JScrollPane。但我不能让它工作。
我已经阅读了谷歌搜索结果前十页上的每一篇奇怪的教程,但我无法让它发挥作用。
假设我有JFrame(尺寸1000x800)。我想在其中放置一个JPanel(1000x2000),以便它与JFrame水平对齐。我想在JPanel的右侧粘贴一个简单的滚动条,这样就可以访问它的其余部分。
我减少了大小,我将JPanel添加到JScrollBar,反之亦然,将其中一个添加到JFrame,两者都没有,但什么都没有。
所以,在这一点上,我不介意几行完成的代码。。。
编辑:好吧,这是代码...
mWindow = new JFrame(lang.getString("title"));
mWindow.setSize(1000, 800);
mWindow.setLocationRelativeTo(null);
mWindow.setResizable(false);
mWindow.setLayout(null);
mWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mWindow.setVisible(true);
workspace = new JPanel();
workspace.setBounds(0,0, 1000, 1203);
workspace.setBackground(Color.RED);
scroll = new JScrollPane(workspace, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setBounds(0, 20, 600, 600);
//scroll.setLayout(null);
mWindow.getContentPane().add(scroll);
mWindow.repaint();
mWindow.validate();
它显示JPanel的一部分(600X600,(JScrollPane大小)),并显示滚动条,但不可滚动
我会做:
>
setPreferredsize如果没有帮助。
mWindow = new JFrame(lang.getString("title"));
mWindow.setSize(1000, 800);
mWindow.setLocationRelativeTo(null);
mWindow.setResizable(false);
mWindow.setLayout(new BorderLayout());
mWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
workspace = new JPanel();
workspace.setBounds(0,0, 1000, 1203);
workspace.setPreferredSize(new Dimension(1000,1203));
workspace.setBackground(Color.RED);
scroll = new JScrollPane(workspace, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setBounds(0, 20, 600, 600);
mWindow.getContentPane().add(scroll, BorderLayout.CENTER);
mWindow.pack();
mWindow.setVisible(true);
通过应用尝试
setPreferredSize(new Dimension());
方法,而不是setSize()方法。
像这样:
import java.awt.Dimension;
import javax.swing.*;
public class Example extends JFrame{
public static void main(String[] args) {
Example ex = new Example();
JPanel panel = new JPanel();
JScrollPane sc = new JScrollPane(panel);
panel.setPreferredSize(new Dimension(800,600));
ex.getContentPane().add(sc);
ex.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ex.pack();
ex.setVisible(true);
}
}
所以,我做了这个非常快速的测试,它对我很有效...
public class TestPane extends JPanel {
public TestPane() {
setBorder(new LineBorder(Color.RED));
// This is for demonstration purposes only
// One should always rely on the layout manager
// to define this value
// Thank kleopatra
setPreferredSize(new Dimension(1000, 1000));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
FontMetrics fm = g.getFontMetrics();
Dimension size = getPreferredSize();
String text = "Pref: " + size.width + "x" + size.height;
g.drawString(text, 0, fm.getAscent());
size = getSize();
text = "Size: " + size.width + "x" + size.height;
g.drawString(text, 0, fm.getHeight() + fm.getAscent());
}
}
和测试框架
public class TestFrame {
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
JScrollPane scroll = new JScrollPane(new TestPane());
frame.add(scroll);
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
由此产生:
另一方面,我不知道为什么人们坚持使用空布局,它们只会带来更多的麻烦和心痛,超出了它们的价值。花点时间找一些简单的布局管理器。我讨厌VB有很多原因,但布局管理是我的首选,IMHO
问题内容: 我有一个,其内容窗格为。为此,我添加了较小的,并且如预期的那样,如果添加太多,则会出现一个垂直滚动条。 问题是,我的小s包含一个过了。我想使用鼠标滚轮 仅 用于滚动面板外,而不是较小的滚动窗格。我已经设定到为小滚动面板,但如果我朝任意方向滚动,以及鼠标越过,滚动不工作了。 有什么建议吗? 问题答案: 您可以尝试将滚轮事件从内部滚动窗格转发到其父级。
jScrollPane这个jQuery插件可以让你通过简单的CSS设置就能够替换所有分块元素在浏览器中默认的垂直滚动条样式。
问题内容: 我有下一个代码: 自动向下滚动。但是,如果我尝试向上滚动以重新阅读消息,则会强制向下滚动。我怎样才能解决这个问题? 问题答案: 添加新邮件时,使用尺寸与邮件窗格的首选大小相同的进行调用。给定垂直取向,它可方便地使的优选尺寸的邮件面板的高度的整数倍。另请参阅: 如何使用滚动窗格 。 附录:有关 文本区域滚动的 引人入胜的讨论也可能会有所帮助。
主要内容:1 Java JScrollPane的介绍,2 Java JScrollPane的构造方法,3 Java JScrollPane的方法,4 Java JScrollPane的案例1 Java JScrollPane的介绍 JscrollPane用于制作组件的可滚动视图。当屏幕大小受到限制时,我们使用滚动窗格来显示大型组件或大小可以动态更改的组件。 2 Java JScrollPane的构造方法 构造方法 描述 JScrollPane() 创建一个滚动窗格。Component参数(如果存
我有一个JFrame,它在JScrollPane中包含一个JSplitPane(因此,如果窗口很大,用户可以滚动)。JSplitPane包含作为顶部组件的JTabbedPane,以及作为底部组件的graphics。现在我想读一个。csv并在我的jtabbedpane中显示它。我可以使用第二个JScrollPane在列表中滚动。问题来了,当我在我的程序中导入。csv时,第一个JScrollPane似
问题内容: 我有一个JFrame,在这个JFrame中,我有一个绘制的JPanel,此Panel可以是任何大小,因此我将其放在JScrollpane中,以便当面板大于窗口屏幕大小时可以滚动。 不幸的是,它没有按我预期的那样工作: 使JFrame窗口小于JPanel大小不会显示滚动条 现在,JScrollPane的大小似乎已锁定为我添加到其中的JPanel的大小,就像以前一样,它的大小已调整为JFr