Re: [問題] Swing有時會顯示出來 有時不會

看板java作者 (傷神客)時間17年前 (2008/06/19 14:30), 編輯推噓4(405)
留言9則, 4人參與, 最新討論串3/3 (看更多)
深感抱歉 早上趕著出門,忘了給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

06/19 14:42, , 1F
你是不是忘了layout的設定 ?.?
06/19 14:42, 1F

06/19 14:43, , 2F
嗄 打完才看到是null layout ~
06/19 14:43, 2F

06/19 15:13, , 3F
建議在MAIN的地方才將jf設 setVisiable
06/19 15:13, 3F

06/19 15:18, , 4F
應該是電腦太爛 XD 我試過跑沒有問題,可正常 display
06/19 15:18, 4F

06/19 15:21, , 5F
不過還是要等大概一秒才會見到東西出現
06/19 15:21, 5F

06/19 15:23, , 6F
另外... vc 根本沒有 call 過 setVisible 啊 XDDDD
06/19 15:23, 6F

06/19 15:45, , 7F
噗噗 是因為那時在找bug 才把那行用掉了 沒想到也可以
06/19 15:45, 7F

06/19 15:51, , 8F
所以就直接把不用setvisible(true) 的部份 給del了 囧
06/19 15:51, 8F

06/20 00:08, , 9F
感謝Slalala這樣的確就好了
06/20 00:08, 9F
文章代碼(AID): #18MVq8uA (java)
文章代碼(AID): #18MVq8uA (java)