问题标签 [jviewport]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JViewport 没有定位它的视图?
我正在为我的应用程序使用 Java Swing,并且我想利用 JViewport 在端口“后面”显示一些类似画布的面板的片段。但不知何故,视口永远不会定位它的视图,所以我必须做一些事情。我做错了什么,为什么这段代码不起作用?
以下是我在更大、更复杂的规模上所做的示例。
结果是“画布”只是停留在 0,0,它永远不会像我使用 setViewPostition() 那样移动到 200,200。无论空布局管理器如何,它的内容都完美定位。为了简单起见,我只是将画布写成 JPanel,但它实际上是一个复杂的 JLayeredPane。
java - Having some trouble understanding JViewPorts
I have been trying to understand JViewports and tried to work with one. I have been using this gentleman's class, which just extends the JViewport class.
If I want to set the viewport in the middle of a 6480*4860 object implementing the JPanel Class, how come this code gives me a blank view, even if, upon debugging,I have confirmation that the class implementing JPanel I am using has been added to the view? Am I completely mixed up in my calls to the different methods or in my comprehension of the coordinates used and their meaning? And one more : Does calling
set only the viewport opaque or it will set all its children too? I guess I will quickly know the answer to this one if I figure out how to properly use viewports.
Here is the class I am trying to use. It takes much more space for this short question, but formatted text should please you more than plain text! If I am not mistaken, though, the problem should not come from here.
I could give you a sscce but I think this should be simple enough, although I can piece together some example quickly if you ask.
java - 在 paintComponent() 中调用 repaint() 占用过多 CPU
嗨,最近我想用 Java 制作自己的界面并且讨厌 Windows 滚动条(我正在添加一个 JList)。所以我决定模仿 Facebook 的滚动条(因为我遇到了这个问题还没有完成)。
所以问题基本上是标题。因此,当我在paintComponent() 中调用repaint() 时,我几乎看到我的CPU 使用率在一个简单的界面上猛增。但我发现有必要这样做,否则我的滚动条不会被重绘。
我的 CPU 是 i7 3770,程序使用了 15%,这不是很多,但对于它的作用来说却是很多。但是当我不调用 repaint() 时,它使用大约 1%,这就是我想要的。
所以这是我的paintComponent() 代码:
下面是一个视频的链接,当我不调用 repaint() 时会发生什么
https://www.youtube.com/watch?v=OMXVB7REFHk&feature=youtu.be
因此,在该视频中,当我滚动时,我必须单击选项/值来重新绘制滚动条。
java - 懒表的滚动条
这是我第一次来这里,如果我有任何错误,请告诉我!
所以,我有一个树表(一些修改后的版本以满足我对 aephyr 的需求 - http://code.google.com/p/aephyr/)最终将有数十万行 - 真的,因为该表用于接收消息,它永远不会结束。因此,我必须设法将信息保存在磁盘上,并且仅在用户想要查看时才加载。我在表的根目录中最多保留 100 个子节点,并通过单击表开头或结尾的两个特殊节点来向上或向下加载一些节点。显然,这不是用户友好的,如果您在节点 10 中并且想要滚动到例如 2000,这会很烦人。
为了更容易使用,我想要一个滚动条,它的位置会告诉我必须加载哪些节点。问题是,无论我为 getRowCount() 返回什么,我表的 JScrollPane 中的默认滚动条似乎只有 100 个节点。我设法创建了另一个看起来应该的 JScrollBar,并使其滚动到我想要的位置,但由于没有绑定到表格或滚动窗格,它不会响应滚动视口或鼠标滚轮。
比,我的问题是:任何人都知道如何使原始 JScrollPane 的滚动条看起来像我想要的那样,所以我不必重新发明轮子来响应表、视口和滚动条中的所有可能事件?
如果需要,我可以尝试制作一些示例代码,但这需要我一些时间,我现在没有的东西 =\
提前感谢!
[编辑]
我用我的问题创建了一个示例代码......不是很好,但我认为足以让你理解我的问题是什么......我在 Eclipse 中有 Aephyr 项目,并在其中创建了一个新的“LazyTableTest”包。 .. 包的源代码在这个 zip 文件中: https ://docs.google.com/file/d/0B4Ti8_BMZvD2b2dtY05GWkxFVGs/edit?usp=sharingt
运行 DemoTable - 它将创建一个包含 2000 个条目的文件,并将它们显示在一个表中(文件创建的初始化有点慢......)。框架包含两个滚动条: - 内部是表的默认值(对于 100 个节点) - 外部是我自己的。直接移动旋钮时,它按预期工作(+一些错误)。当动作来自滚轮或视口时,什么都不会发生 - 我没有为此设置任何东西,而且,如前所述,不想在这个上重新发明轮子......所以,我尝试用我的滚动来 setVerticalScrollBar栏,但它不再起作用(取消注释 DemoTable.java 中的第 528 行)。
想法?!
java - 是否可以将 JComponent 及其所有子组件绘制到另一个组件?
我有一个JPanel
名为GridPanel
. 它允许您将图像从JList
. 允许您使用GridPanel
鼠标拖动图像并根据需要重新排列它们。我感兴趣的是制作GridPanel
组件的缩略图视图。
如果我理解正确,将 aJScrollPane
的视图设置GridPanel
为GridPanel
a 的孩子JViewPort
,它成为JScrollPane
. 目前GridPanel
已经设置为a的视图,JScrollPane
我很确定GridPanel
不能有两个父母。所以我不能让两个组件共享同一个视图,但我真的只需要缩略图视图来绘制GridPanel
.
这引出了我的问题。是否可以复制GridPanel
绘制的内容,但将其绘制在完全独立的组件上?
这是我尝试过的一个例子,以防我不被理解。
我希望这两个组件都显示相同的一组颜色JLabels
,而不是重复这些JLabels
。
java - JScrollPane 自动将 ViewPort 位置设置为 (0,0)
我有一个JScrollPane
其视口是JPanel
. 该面板采用 a 布局,BoxLayout
并且在用户交互时,组件的水平宽度可以改变。当有足够的组件需要滚动条时,更改组件的水平大小然后调用revalidate()
子JPanel
类(视口视图)将始终导致滚动窗格重置为 (0,0)。
我想保留当前视图,所以我设置了一个组件侦听器并将componentMoved()
值存储在getLocation()
(这都在 JPanel 子类或视口视图中)。调用后立即调用revalidate()
存储setLocation()
的位置(在事件调度线程上)。但是,这会导致视图位置设置为 (0,0) 的跳跃,然后立即跳转到存储的位置。有没有办法阻止JScrollPane
回到(0,0)?有没有更好的方法来告诉它它的视口视图的大小已经改变?
我试图(0,0)
通过子类化JScrollBar
和覆盖setValue()
并放置一个断点来弄清楚它的来源,但它没有被击中(但是当我移动滚轮时)所以我假设它是在内部设置的。有谁知道可能会发生什么?
java - JScrollPane中的JTable,如何设置背景?
我正在使用 aJScrollPane
来包装 a JTable
。根据配置,有一些空间未被表占用。它被绘制成灰色(看起来它是透明的,你可以看到背面的组件)。如何将此区域设置为某种颜色?
这是一个SSCCE来说明。
在这里你可以看到我想要“着色”的区域。在 SSCCE 中,我尝试通过使用表格和滚动窗格的 and 来做到这一点,setOpaque(boolean)
但setBackgroundColor(Color)
没有成功。
你能告诉我,我做错了什么吗?
java - 无法更改java应用程序的背景颜色
我正在尝试用 Java 制作图片查看器,而对于我的生活,我无法让查看器的背景颜色变为黑色。这是我的最新代码:
只是我做错了什么?
谢谢!
java - 使用 Java 源代码进行调试
有没有办法将整个 Java 源代码包含到 Eclipse 项目中,以便程序更容易调试(例如,通过在方法中插入 println 否则无法插入任何东西)?
我的代码中有一个错误。但是为了更好地理解为什么会出现我的代码中的错误,我想看看某些系统方法(发生错误的使用)中的中间结果是什么。
例如,我想知道 JViewPort.scrollRectToVisible() 究竟做了什么,以及我的输入在其中的表现如何,方法是打印出方法本身中出现的一些中间结果。
编辑:
我不想使用 JRE System Library X,而是想从 JDK 添加源代码,就好像我自己编写了代码一样。我希望能够编辑任何 System 类,就像我能够编辑我自己创建的任何类一样。我想要可编辑的 .java 文件,而不是打包的 .jars ......
java - 在更大的图像上移动视口;JLabel+JScrollPane
我有一个JScrollPane m_jScrollPane
里面JLabel m_jlImage
显示的。这m_jlImage
是一个屏幕截图,在用户最后一次单击屏幕的位置绘制了一个红点。我希望移动(阅读滚动)上m_jScrollPane
红点的查看区域m_jlImage
。lastClick
是用户单击的最后一个位置,并且与 位于相同的坐标中m_jlImage
。
事实证明,这比我想象的要困难得多。
我决定获取点击点的值与屏幕沿同一轴的整个长度的比率,并以与其最大值的相同比率滚动相应的滚动条。这似乎仅在屏幕上最后一次单击的点位于左上角时才有效。
当点击点位于屏幕边缘时,我不确定如何处理这种情况。这种情况会产生一个比例,导致滚动条以相同的比例滚动,但红点因为位于屏幕边缘而被滚动到视野之外。关于我该如何克服这个问题的任何建议?