所以,我开始玩Linux上的Java FX,因为开发者预览终于出来了。我正在关注网站上的第一个例子(Getting Started with JavaFX),一切似乎都运行正常。但是,在运行示例时,我得到的只是一个空白窗口。
我已经检查过以确保我正在使用JDK7u3上包含的JRE for linux。
奇怪的是我在运行示例时没有遇到任何异常或问题,我只是得到了什么也没做的空白窗口。我甚至可以为舞台设置一些属性,比如设置标题或大小,并反映这些变化;但是场景中没有任何内容,甚至是背景颜色。
有没有人对我可能做错了什么有任何想法?
更新: 感谢您的回复;这是代码和截图,谢尔盖。我删除了大部分示例,只留下了舞台创作:
public class UITest extends Application {
@Override
public void start(Stage mainStage) {
try {
Group root = new Group();
Scene scene = new Scene(root, 400, 300, Color.RED);
mainStage.setScene(scene);
mainStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
这会显示THIS窗口。
我正在使用Ubuntu 11.10并在Eclipse上运行该示例。
-Dprism.verbose = true参数的输出是:
Prism pipeline init order: es2 j2d
Using t2k for text rasterization
Using dirty region optimizations
Prism pipeline name = com.sun.prism.es2.ES2Pipeline
Loading ES2 native library ...
succeeded.
(X) Got class = class com.sun.prism.es2.ES2Pipeline
**** GL_ARB_pixel_buffer_object detected ****
Initialized prism pipeline: com.sun.prism.es2.ES2Pipeline
RESIZE: 6378396429620 w: 432 h: 1
Created GL2ES2: com.sun.prism.opengl.impl.gl2.GL2Impl@132e1b6
GL_VENDOR: NVIDIA Corporation
GL_RENDERER: Quadro FX 350M/PCI/SSE2
GL_VERSION: 2.1.2 NVIDIA 280.13
GL_EXTENSIONS:
GL_ARB_color_buffer_float
GL_ARB_copy_buffer
GL_ARB_depth_clamp
GL_ARB_depth_texture
GL_ARB_draw_buffers
GL_ARB_ES2_compatibility
GL_ARB_explicit_attrib_location
GL_ARB_fragment_program
GL_ARB_fragment_program_shadow
GL_ARB_fragment_shader
GL_ARB_framebuffer_object
GL_ARB_get_program_binary
GL_ARB_half_float_pixel
GL_ARB_half_float_vertex
GL_ARB_imaging
GL_ARB_map_buffer_range
GL_ARB_multisample
GL_ARB_multitexture
GL_ARB_occlusion_query
GL_ARB_occlusion_query2
GL_ARB_pixel_buffer_object
GL_ARB_point_parameters
GL_ARB_point_sprite
GL_ARB_provoking_vertex
GL_ARB_robustness
GL_ARB_sampler_objects
GL_ARB_separate_shader_objects
GL_ARB_shader_objects
GL_ARB_shading_language_100
GL_ARB_shading_language_include
GL_ARB_shadow
GL_ARB_texture_border_clamp
GL_ARB_texture_compression
GL_ARB_texture_cube_map
GL_ARB_texture_env_add
GL_ARB_texture_env_combine
GL_ARB_texture_env_crossbar
GL_ARB_texture_env_dot3
GL_ARB_texture_float
GL_ARB_texture_mirrored_repeat
GL_ARB_texture_non_power_of_two
GL_ARB_texture_rectangle
GL_ARB_texture_rg
GL_ARB_texture_swizzle
GL_ARB_timer_query
GL_ARB_transpose_matrix
GL_ARB_vertex_array_bgra
GL_ARB_vertex_array_object
GL_ARB_vertex_buffer_object
GL_ARB_vertex_program
GL_ARB_vertex_shader
GL_ARB_window_pos
GL_ATI_draw_buffers
GL_ATI_texture_float
GL_ATI_texture_mirror_once
GL_S3_s3tc
GL_EXT_texture_env_add
GL_EXT_abgr
GL_EXT_bgra
GL_EXT_blend_color
GL_EXT_blend_equation_separate
GL_EXT_blend_func_separate
GL_EXT_blend_minmax
GL_EXT_blend_subtract
GL_EXT_compiled_vertex_array
GL_EXT_Cg_shader
GL_EXT_depth_bounds_test
GL_EXT_direct_state_access
GL_EXT_draw_range_elements
GL_EXT_fog_coord
GL_EXT_framebuffer_blit
GL_EXT_framebuffer_multisample
GL_EXT_framebuffer_object
GL_EXT_gpu_program_parameters
GL_EXT_multi_draw_arrays
GL_EXT_packed_depth_stencil
GL_EXT_packed_pixels
GL_EXT_pixel_buffer_object
GL_EXT_point_parameters
GL_EXT_provoking_vertex
GL_EXT_rescale_normal
GL_EXT_secondary_color
GL_EXT_separate_shader_objects
GL_EXT_separate_specular_color
GL_EXT_shadow_funcs
GL_EXT_stencil_two_side
GL_EXT_stencil_wrap
GL_EXT_texture3D
GL_EXT_texture_compression_dxt1
GL_EXT_texture_compression_s3tc
GL_EXT_texture_cube_map
GL_EXT_texture_edge_clamp
GL_EXT_texture_env_combine
GL_EXT_texture_env_dot3
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_format_BGRA8888
GL_EXT_texture_lod
GL_EXT_texture_lod_bias
GL_EXT_texture_mirror_clamp
GL_EXT_texture_object
GL_EXT_texture_sRGB
GL_EXT_texture_swizzle
GL_EXT_timer_query
GL_EXT_vertex_array
GL_EXT_vertex_array_bgra
GL_EXT_x11_sync_object
GL_EXT_import_sync_object
GL_IBM_rasterpos_clip
GL_IBM_texture_mirrored_repeat
GL_KTX_buffer_region
GL_NV_alpha_test
GL_NV_blend_minmax
GL_NV_blend_square
GL_NV_complex_primitives
GL_NV_copy_depth_to_color
GL_NV_depth_clamp
GL_NV_fbo_color_attachments
GL_NV_fence
GL_NV_float_buffer
GL_NV_fog_distance
GL_NV_fragdepth
GL_NV_fragment_program
GL_NV_fragment_program_option
GL_NV_fragment_program2
GL_NV_framebuffer_multisample_coverage
GL_NV_half_float
GL_NV_light_max_exponent
GL_NV_multisample_filter_hint
GL_NV_occlusion_query
GL_NV_packed_depth_stencil
GL_NV_pixel_data_range
GL_NV_point_sprite
GL_NV_primitive_restart
GL_NV_register_combiners
GL_NV_register_combiners2
GL_NV_texgen_reflection
GL_NV_texture_barrier
GL_NV_texture_compression_vtc
GL_NV_texture_env_combine4
GL_NV_texture_expand_normal
GL_NV_texture_lod_clamp
GL_NV_texture_rectangle
GL_NV_texture_shader
GL_NV_texture_shader2
GL_NV_texture_shader3
GL_NV_vertex_array_range
GL_NV_vertex_array_range2
GL_NV_vertex_program
GL_NV_vertex_program1_1
GL_NV_vertex_program2
GL_NV_vertex_program2_option
GL_NV_vertex_program3
GL_NVX_conditional_render
GL_OES_depth24
GL_OES_depth32
GL_OES_depth_texture
GL_OES_element_index_uint
GL_OES_fbo_render_mipmap
GL_OES_get_program_binary
GL_OES_mapbuffer
GL_OES_packed_depth_stencil
GL_OES_rgb8_rgba8
GL_OES_standard_derivatives
GL_OES_texture_3D
GL_OES_texture_float
GL_OES_texture_float_linear
GL_OES_texture_half_float
GL_OES_texture_half_float_linear
GL_OES_texture_npot
GL_OES_vertex_array_object
GL_OES_vertex_half_float
GL_SGIS_generate_mipmap
GL_SGIS_texture_lod
GL_SGIX_depth_texture
GL_SGIX_shadow
GL_SUN_slice_accum
RESIZE: 6378695960023 w: 1 h: 1
RESIZE: 6378733837813 w: 400 h: 300
答案 0 :(得分:3)
如果其他人遇到同样的问题,那么结果证明是JVM的问题,而不是JafaFX JDK。在使用具有效果的窗口管理器时,Linux中会出现此问题,例如使用Compiz时。似乎这曾经发生在JRE1.6之前,并且应该在更新1.6u3之后解决,但显然它再次发生在JRE1.7上。
该修复程序是使用suckless-tools'设置另一个窗口管理器名称。 wmname实用程序。对我来说,它通过设置为LG3D来工作。
希望这有助于某人。 此致!
答案 1 :(得分:0)
Prism输出看起来是正确的,这个硬件和管道fx应该适用于您的Linux。请你运行下一个代码(将一个简单的对象添加到场景并设置标题)?
public class UITest extends Application {
@Override
public void start(Stage mainStage) {
Group root = new Group(new Button("hello"));
Scene scene = new Scene(root, 400, 300, Color.RED);
mainStage.setScene(scene);
mainStage.setTitle("fx test");
mainStage.show();
}
public static void main(String[] args) { launch(); }
}