作者privatewind (伤神客)
看板java
标题Re: [问题] Swing有时会显示出来 有时不会
时间Thu Jun 19 14:30:31 2008
深感抱歉 早上赶着出门,忘了给code o(‧"‧)o
我主要是getContentPane.add(vc)
这个vc 是继承Jpanel而来的
但是当我要把vc setVisible(true) 常出错
时好时坏Orz
/**
* @(#)test.java
*
*
* @author
* @version 1.00 2008/6/18
*/
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.media.*;
import java.awt.event.*;
import javax.media.Control;
import java.io.*;
class volumeChange extends JPanel implements ActionListener{
private GainControl gain;
private JButton jbadd=new JButton("+");
private JButton jbsub=new JButton("-");
private JLabel jl=new JLabel("音量改变 ");
private Player player;
public volumeChange(Player tp){
super();
setSize(130,33);
setBorder(new EtchedBorder(EtchedBorder.RAISED));
player=tp;
gain=player.getGainControl();
add(jl);
add(jbadd);
jbadd.addActionListener(this);
jbadd.setMargin( new Insets(0,2,0,2) );
add(jbsub);
jbsub.addActionListener(this);
jbsub.setMargin( new Insets(0,3,0,3) );
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==jbadd){
float t=gain.getLevel();
gain.setLevel( (float)(t+0.1>1.0?1.0:t+0.1) );
}
if(e.getSource()==jbsub){
float t=gain.getLevel();
gain.setLevel( (float)(t-0.1<0?0:t-0.1) );
}
}
}
public class test extends JFrame{
private volumeChange vc;
private Player player;
private Component cpc;
private Component visualWindow;
private JDesktopPane jdp;
//public Player getPlayer(){ return player; }
public test(String title)throws Exception{
super(title);
setSize(500,500);
setVisible(true);
setLayout(null);
addWindowListener( new WinAct(this) );
File file=new File("C:\\123.mpg");
player=Manager.createRealizedPlayer(new
MediaLocator(file.toURI().toURL()));
vc=new volumeChange(player);
vc.setLocation(320,370);
getContentPane().add(vc);
cpc=player.getControlPanelComponent();
cpc.setBounds(50,370,260,30);
getContentPane().add(cpc);
visualWindow=player.getVisualComponent();
visualWindow.setBounds(50,50,400,300);
getContentPane().add(visualWindow);
}
public static void main(String[] args)throws Exception{
test jf=new test("test");
}
static class WinAct extends WindowAdapter{
private test jf;
public WinAct(test tjf){
jf=tjf;
}
public void windowClosing(WindowEvent e) {
jf.player.stop();
jf.player.deallocate();
jf.dispose();
System.exit(0);
}
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.23.226.13
1F:推 TonyQ:你是不是忘了layout的设定 ?.? 06/19 14:42
2F:→ TonyQ:嗄 打完才看到是null layout ~ 06/19 14:43
3F:推 slalala:建议在MAIN的地方才将jf设 setVisiable 06/19 15:13
4F:推 superlubu:应该是电脑太烂 XD 我试过跑没有问题,可正常 display 06/19 15:18
5F:推 superlubu:不过还是要等大概一秒才会见到东西出现 06/19 15:21
6F:→ superlubu:另外... vc 根本没有 call 过 setVisible 啊 XDDDD 06/19 15:23
7F:→ privatewind:噗噗 是因为那时在找bug 才把那行用掉了 没想到也可以 06/19 15:45
8F:→ privatewind:所以就直接把不用setvisible(true) 的部份 给del了 囧 06/19 15:51
9F:→ privatewind:感谢Slalala这样的确就好了 06/20 00:08