
用指定的图片构造标签对象lb。
把标签放在第二层JlayerPane上。
设置标签的尺寸,即背景图象的大小。
把内容面板设置为透明,这样整个框架的背景就不再是内容面板的背景色,而是第二层中标签的图像。
将标签添加到主面板pnlMain中。
做法一:InputStream is =null
AudioStream as = null
is = getClass().getResourceAsStream("a.wav")
try {
as = new AudioStream(is)
} catch (IOException e) {}
AudioPlayer.player.start(as)
此方法将音乐文件放入流中在播放,仅限于Java Application,容易报错,空指针异常,或者是流异常,不推荐。
做法二:
String music = "a.wav"
AudioClip clip = Applet.newAudioClip(getClass().getResource(music))
次方法在Applet中运行没有问题,但是Application中getclass()会返回空指针,导致失败。
推荐做法:
private URL url
private AudioClip ac
File f1 = new File("C:/3.wav")
try {
url= f1.toURL()
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
ac= Applet.newAudioClip(cb1)
ac.play()
stage = new Stage()stage.initModality(Modality.APPLICATION_MODAL)
stage.initStyle(StageStyle.TRANSPARENT)//这是让d出窗口透明,如果不设置stage透明,stackpane再怎么设置也没用。
FXML:
<StackPane
style="-fx-border-radius:8px-fx-opacity: 0.4-fx-background-color: black "
xmlns="Java SE | Oracle Technology Network" xmlns:fx="Java SE | Oracle Technology Network"
>
fxml里用css样式 -fx-opacity: 0.4控制stackpane半透明
以上方法stage显示后是半透明遮罩效果,但是我想要在stackpane中间一块区域里放输入对话框,结果输入部分还是半透明的效果,还未能解决
追加----换了下实现方式,就是在primaryStage布局中用stackpane,在stackpane的children中添加一个半透明的pane,<Pane fx:id="main_mask" style="-fx-border-radius:8px-fx-opacity: 0.4-fx-background-color: black " visible="false" />,默认不显示;在显示d出的stage时,再通过代码设置main_mask显示,在关闭d出stage时,隐藏main_mask,这样能达到想要的效果了,但是这样的缺点是不通用,组件不独立,想办法改进中
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)