- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我相信 JViewport 确实可以与 JPanel 一起使用,但是当我构建一个扩展 JPanel 的新类时,程序似乎忽略了 JViewport。我不知道我是否做错了什么,所以这是我进行的测试,仍然得到相同的结果:
public class panel extends JPanel
{
public panel()
{
super();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.BLUE);
g.drawString("Hello World", 50, 50);
g.setColor(Color.RED);
g.fillRect(50,50,100,100);
g.setColor(Color.BLACK);
g.fillOval(100, 100, 50, 50);
}
}
public class test extends JFrame
{
private panel p;
public void init()
{
this.setSize(1000, 1000);
this.setLayout(new BorderLayout());
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
p = new panel();
p.setOpaque(false);
JViewport v = new JViewport();
v.setViewSize(new Dimension(200,200));
v.setViewPosition(new Point(2000,2000));
v.setView(p);
this.add(v,BorderLayout.CENTER);
}
public test()
{
init();
}
public static void main(String[] args)
{
test t = new test();
}
}
它应该显示绘制的 JPanel 的一部分,但 JFrame 窗口只显示整个 JPanel。因此,我不知道我是否做错了什么,或者JViewport不是为此目的而构建的。如果是后者,那么如果有人能提出一个解决方案,那就太好了。
谢谢
最佳答案
您使用的 BorderLayout
导致位于中心的视口(viewport)占据框架内的整个空间,因为该布局中没有其他组件。这就是 BorderLayout
的工作原理。
因此,视口(viewport)也被赋予了比定义更大的尺寸(该尺寸被布局管理器覆盖)。由于面板也没有固定的大小,因此它也会调整大小。
为了改变这一点,可以使用不同的布局管理器,或者设置视口(viewport)的最小/最大尺寸并覆盖面板的 getPreferredSize()
。
附注:不要使用小写的类名,例如 panel
。
关于java - JViewport 不会为 JPanel 的派生类生成视口(viewport),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9826224/
我最近一直在摆弄java,正在尝试开发一个小游戏。问题是,我正在使用的 JViewport 没有更新。当在视口(viewport)上调用重绘方法时,视口(viewport)在正确的位置闪烁,并且视口(
我使用默认布局管理器(使用 viewport.setViewPosition)获得了一个正确滚动的 JViewport,但是当我调用 setLayout(null) 时,它不再有效。 有什么想法吗?
我正在使用 JViewport 查看一些数据,并且我希望将标题行放置在 JViewport 的底部而不是顶部。 视口(viewport)永远不会水平滚动,因此滚动条的位置问题不是问题。 我怀疑我必须制
我尝试集成 http://java-swing-tips.blogspot.co.uk/2008/06/mouse-drag-auto-scrolling.html进入我的程序,但它似乎行为不当,我不
我知道 setViewportBorder(),但我想知道您是否可以设置视口(viewport)的边界而不是仅仅用空边框填充。我想要实现的是为页眉和页脚组件创建空间,内联增加和减少按钮。
我一直在尝试了解 JViewports 并尝试使用它。我一直在用这位先生的class ,它只是扩展了 JViewport 类。 如果我想在实现 JPanel 类的 6480*4860 对象中间设置视口
我无法提供 SSCCE,因为我无法在大型应用程序之外重复错误。 但这里是一个片段和输出: if (vp != null) { try {
目前我有一个漂亮的 JViewport,其中设置了一个 Jlabel 并将其用作 View 。我想知道是否可以使用分层 Jlabels 作为视口(viewport)的 View 。 IE:我想将新的
我正在为我的应用程序使用 Java Swing,我想利用 JViewport 在端口“后面”显示一些类似 Canvas 的面板的片段。但不知何故视口(viewport)永远不会定位它的观点,所以一定有
我有一个带有 JScrollPane 的 JTable。 scrollPane 视口(viewport)有些东西我不明白...我现在在表中选择第 1000 行,它上面的许多行在屏幕上不可见。现在,当我
我已经编写了如下定义的 MouseListener,这样我就可以移动 JButton 来重新排序 JPanel 中的组件。 JPanel 位于 JScrollPane 中,因此当添加多个组件时,它们可
我有一个 JFrame,其中包含一个 JScrollPane,其中包含一个 JPanel。JPanel 包含一堆 JTextArea。我正在向其中加载大量文本(大约 8k-10k 个字符)。 布局工作
我在 JScrollPane 中有一个自定义文本组件。当文本为空并且没有滚动条时,我可以看到所有文本。但是,当滚动条变得可见时,一些文本会“隐藏”在这些滚动条后面。也许我可以监听 JViewPort
我的滚动 Pane 存在透明度/滚动问题。据我所知,文档没有解决这种行为。 这是我的透明文本面板的代码: textArea.setOpaque(false); scrollPane.s
我相信 JViewport 确实可以与 JPanel 一起使用,但是当我构建一个扩展 JPanel 的新类时,程序似乎忽略了 JViewport。我不知道我是否做错了什么,所以这是我进行的测试,仍然得
我是一名优秀的程序员,十分优秀!