作者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
推 TonyQ:你是不是忘了layout的設定 ?.? 06/19 14:42
→ TonyQ:嗄 打完才看到是null layout ~ 06/19 14:43
推 slalala:建議在MAIN的地方才將jf設 setVisiable 06/19 15:13
推 superlubu:應該是電腦太爛 XD 我試過跑沒有問題,可正常 display 06/19 15:18
推 superlubu:不過還是要等大概一秒才會見到東西出現 06/19 15:21
→ superlubu:另外... vc 根本沒有 call 過 setVisible 啊 XDDDD 06/19 15:23
→ privatewind:噗噗 是因為那時在找bug 才把那行用掉了 沒想到也可以 06/19 15:45
→ privatewind:所以就直接把不用setvisible(true) 的部份 給del了 囧 06/19 15:51
→ privatewind:感謝Slalala這樣的確就好了 06/20 00:08