- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在开发一个有两个 JPanel 的应用程序。第一个 JPanel 用作绘图板,第二个用作属性/设置面板。所以绘图板应该使用主动渲染和第二个被动渲染。它们都被添加到 JFrame 中。
我一直在阅读有关 java 中的主动呈现的内容,但我注意到 JPanel 不支持 createBufferStrategy。这是否意味着我需要使用 Canvas ? canvas 的问题在于它不是容器,因此我无法向其添加组件。我也可以使用 JFrame 缓冲策略(但由于标题,我必须修复位置偏移量?)。我可以使用 JPanel 主动渲染但仍然让第二个 JPanel 使用被动渲染吗?
最佳答案
下面是一些结合“被动”Swing 组件和主动动画的示例:
public static void main ( String[] args )
{
JFrame frame = new JFrame ();
JPanel view = new JPanel ( null );
view.setPreferredSize ( new Dimension ( 500, 500 ) );
frame.add ( view );
JButton button1 = new JButton ( "Button 1" );
button1.setBounds ( 10, 10, 100, 40 );
button1.setOpaque ( false );
view.add ( button1 );
Animator animator = new Animator ();
animator.setBounds ( 0, 0, 500, 500 );
view.add ( animator );
JButton button2 = new JButton ( "Button 2" );
button2.setBounds ( 390, 450, 100, 40 );
button2.setOpaque ( false );
view.add ( button2 );
frame.setResizable ( false );
frame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
frame.pack ();
frame.setLocationRelativeTo ( null );
frame.setVisible ( true );
}
public static class Animator extends JComponent
{
private float angle = 0;
public Animator ()
{
super ();
setOpaque ( false );
new Timer ( 1000 / 24, new ActionListener ()
{
public void actionPerformed ( ActionEvent e )
{
angle += 0.2f;
if ( angle > 360 )
{
angle = 0;
}
repaint ();
}
} ).start ();
addMouseListener ( new MouseAdapter ()
{
//
} );
}
protected void paintComponent ( Graphics g )
{
super.paintComponent ( g );
Graphics2D g2d = ( Graphics2D ) g;
g2d.setRenderingHint ( RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON );
GeneralPath shape = getShape ();
g2d.setPaint ( Color.BLACK );
g2d.fill ( shape );
}
public boolean contains ( int x, int y )
{
return getShape ().contains ( x, y );
}
private GeneralPath getShape ()
{
GeneralPath gp = new GeneralPath ( GeneralPath.WIND_EVEN_ODD );
gp.append ( new Rectangle2D.Double ( -250, 150, 1000, 200 ), false );
AffineTransform at = new AffineTransform ();
at.rotate ( angle * Math.PI / 90, 250, 250 );
gp.transform ( at );
return gp;
}
}
正如你所看到的,黑色旋转区域不仅覆盖了右下角的按钮,而且还阻止了被条纹按钮覆盖的部分的鼠标事件。发生这种情况是由于覆盖了 Animator 的 contains() 方法:
public boolean contains ( int x, int y )
{
return getShape ().contains ( x, y );
}
默认情况下,组件在父级的整个边界上捕获鼠标事件,但通过更改此方法,您可以按照自己喜欢的方式使用它。
还可以做很多优化,例如每次重绘后将形状保存到某个变量并在检查“包含”值时返回它。
无论如何希望这至少对您的问题有所帮助...
关于java混合主动和被动渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10243464/
我是单元测试的新手。我已经对 Controller 类进行了单元测试,但从未测试过模态类。我正在为我的应用程序使用被动 View 模式。 我正在使用 Cpp 单元测试框架。 如有任何提示,我们将不胜感
我正在尝试为 RabbitMQ 的两个数据中心之间提供灾难恢复。在主 DC 出现故障之前,辅助数据中心处于被动状态。 队列联合是不合适的,因为在辅助 DC 中的使用者激活之前它不会移动消息。除非主 D
我正在使用斯坦福标记器来确定词性。但是,我想从文本中获取更多信息。是否有可能获得更多信息,例如句子的时态或是否处于主动/被动状态? 到目前为止,我使用的是非常基本的 PoS 标记方法: List> t
我有一个客户端,您不能使用主动 FTP 连接,因为它们受接口(interface)应用程序的限制。我遇到的问题是我的 Active 设置很好,但无法理解为什么我的被动 FTP 只会超时。 我已关注这篇
正如“构建您自己的 CAB”博文系列中提到的,当您采用被动 View 设计模式时,无法利用数据绑定(bind)。这对我来说并不像我想要的那样清楚。那么,你们中的任何一个人能否展示在监督 Control
我想做的是以下内容:一个服务,持续监听 gps(是的:JUST gps)位置更新而不主动请求它们 - 即这个应用程序不应该消耗额外的资源电池生命周期或 CPU 时间,直到其他应用程序请求/接收 GPS
我正在尝试实现 Passive View基于 swing 的 gui 系统。基本上我想保持我的 View 实现(实际包含 swing 代码的部分)最少,并在我的 Presenter 类中完成大部分工作
RFC 1006 TCP 连接中主动连接和被动连接有何区别? 最佳答案 这里有解释:https://www.rfc-editor.org/rfc/rfc793 A passive OPEN reque
在 MarkLogic 7 中,副本是主动-主动还是主动-被动? 最佳答案 您是在询问本地磁盘故障转移(又名林复制)、数据库复制还是灵活复制? 事实上,这三个都是为主动-被动使用而设计的:换句话说,单
我们计划使用 kubernetes 在容器平台中设置高度可用的 Jenkins。我们正在考虑设置一个事件主机和另一个处于待机模式的主机。Jenkins 数据量将存储在两个主容器之间共享的全局存储中。
我已在多个网站( http://blogs.thesitedoctor.co.uk/tim/Trackback.aspx?guid=e81a4682-0851-490b-a3d2-adf254a701
我目前正在学习 MVP 设计模式,并且对简单逻辑应该放在哪里有疑问。 我的印象是所有业务逻辑都应该进入模型,这是否包括简单的方法,例如: public int Add(int a, int b){
我研究 MVP 模式已有一段时间,并设法创建了一些简单的 MVP 兼容应用程序。 我现在正尝试将该模式应用到一个更复杂的应用程序中,但我对这样做的最佳方式存疑。 我的应用程序只有一个 WinForm,
View 是否应该在其接口(interface)中没有任何特定于事件的内容并调用演示者普通方法来处理事件并且没有任何官方的 EventHandlers?比如 // ASPX protected voi
我有一个应用程序,需要在负载均衡器后面以主动-被动模式设置,以便所有连接都应转到主动实例。如果主动实例出现故障,它应该从被动实例启动 session 。 我收集到的唯一信息是我们只能在负载均衡器后面设
我已经使用被动 View 模式实现了一个 MVP 三元组——即 View 只包含简单的 getter 和 setter。但是我在分离 View 数据和模型数据时遇到了问题。特别是在处理 View 状态
我一直在用我认为的 Passive MVP 实现我的 android 应用。 例如,在我的 View 类中,我有一个 ListView。 查看 ListView userListView; 当一个项目
我正在尝试通过我正在构建的迁移向导中的 shell 命令执行静默安装。 msiexec /i E:\mysql-installer-community-5.6.16.0.msi /passive 虽然
我在 Passive View 上找到了 M. Fowler 的文章图案。我想在我的申请中应用它。我将 Swing 用于 UI。我花了几个小时搜索如何实现它的教程或示例,但没有找到太多有用的东西。有人
我正在用 C# 开发 WinForms 应用程序。我在 GUI 编程方面的经验有限,而且我必须即时学习很多东西。话虽这么说,这就是我正在 build 的。 查看一般 GUI 查看以下链接: GUI h
我是一名优秀的程序员,十分优秀!