java窗体jmeun刷新,java – JME 3 Swing,多幅画布
我正在玩JME3,目前面临以下问题:
当LWJGL画布包含在多个应用程序选项卡中时,它们都不会或仅运行一次.
这是一个例子:
SwingCanvas.java:
package jme3test.helloworld;
import java.awt.Dimension;
import javax.swing.JFrame;
import com.jme3.app.SimpleApplication;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;
import com.jme3.system.AppSettings;
import com.jme3.system.JmeCanvasContext;
public class SwingCanvas extends SimpleApplication {
private void SwingCanvasTest() {
SwingCanvas app = new SwingCanvas();
app.start();
}
@Override
public void simpleInitApp() {
// activate windowed input behaviour
flyCam.setDragToRotate(true);
Box box = new Box(2, 2, 2);
Geometry geom = new Geometry("Box", box);
Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("Color", ColorRGBA.Blue);
geom.setMaterial(mat);
rootNode.attachChild(geom); // make the cube appear in the scene
}
public JmeCanvasContext createJMEcanvas(){
AppSettings settings = new AppSettings(true);
settings.setWidth(640);
settings.setHeight(480);
this.setSettings(settings);
this.createCanvas(); // create canvas!
JmeCanvasContext ctx = (JmeCanvasContext) this.getContext();
ctx.setSystemListener(this);
Dimension dim = new Dimension(640, 480);
ctx.getCanvas().setPreferredSize(dim);
return ctx;
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
SwingCanvas canvasApplication = new SwingCanvas();
JFrame window = new JFrame("Swing Application");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.add(canvasApplication.createJMEcanvas().getCanvas());
window.pack();
window.setVisible(true);
canvasApplication.start();
}
});
}
}
SwingApplicationJME.java:
package jme3test.helloworld;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
import com.jme3.system.JmeCanvasContext;
public class SwingApplicationJME {
public SwingApplicationJME(){
JFrame frame = new JFrame("JME Swing Application");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(getLayout());
frame.setVisible(true);
}
private JComponent getLayout(){
JTabbedPane tabbedPane = new JTabbedPane();
SwingCanvas canvas1 = new SwingCanvas();
SwingCanvas canvas2 = new SwingCanvas();
SwingCanvas canvas3 = new SwingCanvas();
JmeCanvasContext ctx1 = canvas1.createJMEcanvas();
JmeCanvasContext ctx2 = canvas2.createJMEcanvas();
JmeCanvasContext ctx3 = canvas3.createJMEcanvas();
JPanel JME_panel_1 = new JPanel(new BorderLayout());
JME_panel_1.add(new JButton("WEST"), BorderLayout.WEST);
JME_panel_1.add(new JButton("NORTH"), BorderLayout.NORTH);
JME_panel_1.add(new JButton("EAST"), BorderLayout.EAST);
JME_panel_1.add(new JButton("SOUTH"), BorderLayout.SOUTH);
JME_panel_1.add(ctx1.getCanvas(), BorderLayout.CENTER);
JPanel JME_panel_2 = new JPanel();
JSplitPane splitPaneVertical = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
splitPaneVertical.add(new JButton("Vertical Button"), JSplitPane.LEFT);
splitPaneVertical.add(ctx2.getCanvas(), JSplitPane.RIGHT);
JME_panel_2.add(splitPaneVertical);
JPanel JME_panel_3 = new JPanel();
JSplitPane splitPaneHorizontal = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
splitPaneHorizontal.add(new JButton("Horizontal Button"), JSplitPane.TOP);
splitPaneHorizontal.add(ctx3.getCanvas(), JSplitPane.BOTTOM);
JME_panel_3.add(splitPaneHorizontal);
tabbedPane.add(JME_panel_1, "JME border panel");
tabbedPane.add(JME_panel_2, "JME vetical split panel");
tabbedPane.add(JME_panel_3, "JME horizontal split panel");
return tabbedPane;
}
public static void main(String [] s){
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
SwingApplicationJME app = new SwingApplicationJME();
}
});
}
}
任何想法请=)
java窗体jmeun刷新,java – JME 3 Swing,多幅画布相关推荐
- Java窗体图书管理系统Java图书借阅管理系统(图书借阅系统)
Java窗体图书管理系统Java图书借阅管理系统(图书借阅系统)
- java 窗体添加背景图片_Java Swing实现窗体添加背景图片的2种方法详解
本文实例讲述了java Swing实现窗体添加背景图片的2种方法.分享给大家供大家参考,具体如下: 在美化程序时,常常需要在窗体上添加背景图片.通过搜索和测试,发现了2种有效方式.下面分别介绍. 1. ...
- idea的Java窗体可视化工具Swing UI Designer的简单使用(一)
0.问题总结 Warning:java: 源值1.5已过时, 将在未来所有发行版中删除: Error:java: Compilation failed: internal java compiler ...
- Java窗体实现飞机躲子弹游戏,java awt swing 飞机躲子弹
[实例简介] [实例截图] [核心代码] package com.plane.game; import javax.swing.JComboBox; import javax.swing.JFrame ...
- Java窗体应用程序:人事管理系统
老师布置了第二个JAVA作业,让写人事管理系统. 代码思路参考自:清华大学出版设出版的<Java课程设计案例精编(第3版)> 作业是老师在十月一日哦放假前让写的,所以十一回家写了俩界面,然 ...
- java窗体添加背景图片_Java项目实战之实战之天天酷跑(四):游戏主界面
接上文,本文将实现游戏主界面,功能如下: 移动的背景图片.动态的玩家.玩家的移动功能.五种障碍物持续出现.玩家和障碍物的碰撞.暂停.继续功能. 首先,看一下整体效果: 动图实在太大,几秒钟的 Gif ...
- java 窗体 源码_Java制作MDI窗体源代码
由于实际需要做一个MDI窗体,百度里面找到一个不错的源代码给大家分享一下. import javax.swing.*; import java.awt.event.*; import java.awt ...
- Java进阶篇(六)——Swing程序设计(上),java面试题,java基础笔试题,BAT
写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. Sw ...
- 【java毕业设计】基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码)——推箱子游戏
基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+Eclipse的推箱子游戏设计与实现,文章末尾附有本毕业设计的论文 ...
最新文章
- 连接两个点云中的字段或数据形成新点云以及Opennni Grabber初识
- 为什么“不懂数据结构与算法”的程序员一定走不远?
- rsyslog服务日志报错分析1
- tp5.1的安装与运行流程
- 【机器学习算法专题(蓄力计划)】二十、实操代码MNIST 数据集
- 【ExtJS】FormPanel 布局(一)
- 浙江嘉兴“网事”再添国字招牌 领跑城市智慧转型
- HTML5网站大观:分享8个精美的 HTML5 网站案例
- 图像的连通域标记算法及工具介绍
- 独家专访 | “共同基金之父”纽伯格的公司(NeubergerBerman)要在中国做什么?
- php 字体设计,时尚前沿:15个创意的3D字体设计艺术作品欣赏
- 【MM模块】Inventory Management(IM)库存管理简介
- 运维工程师绩效考核表_IT运维绩效考核表
- Android 10.0 recovery prompt_and_wait 跳过弹窗 自动 WIPE_DATA(出厂设置)
- python词云生成
- 【自制小工具】快速批量查询IP归属地(自动去重、按国内外汇总,并智能识别出错误IP)
- lzx: ssh: connect to host lzx port 22: Connection timed out-------hadoop
- Windows下访问Ubuntu虚拟机中的Samba服务器遇到“\\192.168.71.128无法访问,您可能没有权限访问网络资源。请与这台服务器的管理员联系以查明您是否有访问权”的问题
- scrapy爬取昵图网图片
- less 和 sass 配置