前提・実現したいこと
jframeの画面上で動かしている時刻(自分で作成したものでリアルの時刻ではない)を同じく画面上にあるスライダーを使って自由に任意の時刻へ飛べるようにしたいです。
プログラミング初心者でいろいろ調べながらここまで作成しましたがこれ以上進まず行き詰っています。
どなたかアドバイスしてくださるとうれしいです。
発生している問題・エラーメッセージ
今現在、時間の作成、スライダーの作成、画面上への表示はできているのですが、時間とスライダーの対応付けができておらず、また、スライダーを左右に動かそうとしても動かないという状況です。
該当のソースコード
Java
1 2import java.awt.BorderLayout; 3import java.awt.Color; 4import java.awt.Font; 5import java.awt.Graphics; 6import java.util.Hashtable; 7 8import javax.swing.JComponent; 9import javax.swing.JFrame; 10import javax.swing.JLabel; 11import javax.swing.JPanel; 12import javax.swing.JSlider; 13public class Windows6 extends JFrame { 14 private static final long serialVersionUID = 1L; 15 //画面の作成 16 public Windows6() { 17 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 18 Hashtable<Integer, JComponent> table = new Hashtable<Integer, JComponent>(); 19 20 table.put(new Integer(0), new JLabel("8")); //8時 21 table.put(new Integer(10), new JLabel("9")); 22 table.put(new Integer(20), new JLabel("10")); 23 table.put(new Integer(30), new JLabel("11")); 24 table.put(new Integer(40), new JLabel("12")); 25 table.put(new Integer(50), new JLabel("13")); 26 table.put(new Integer(60), new JLabel("14")); 27 table.put(new Integer(70), new JLabel("15")); 28 table.put(new Integer(80), new JLabel("16")); 29 table.put(new Integer(90), new JLabel("17")); 30 table.put(new Integer(100), new JLabel("18")); 31 32 JSlider slider = new JSlider(); 33 slider.setValue(0); 34 slider.setLabelTable(table); 35 slider.setPaintLabels(true); 36 37 JPanel p = new JPanel(); 38 p.add(slider); 39 40 getContentPane().add(p, BorderLayout.CENTER); 41 // フレームを表示 42 setVisible(true); 43 44 } 45 //画面表示 46 public void paint(Graphics g){ 47 super.paint(g); 48 49 int sec=20,min=31, hour=8; 50 51 for(int t=0; t<10000; t++) { 52 53 try{ 54 55 Thread.sleep(100); 56 57 58 59 }catch(InterruptedException e){ 60 } 61 62 63 if(sec==60) { 64 min=min+1; 65 sec=0; 66 } 67 if(min==60) { 68 hour=hour+1; 69 min=0; 70 } 71 if(hour==24){ 72 73 hour=0; 74 break; 75 } 76 77 78 String time=hour+":"+min+":"+sec; 79 80 System.out.println(hour+":"+min+":"+sec); 81 g.setColor(Color.white); 82 g.fillRect(50, 100, 100, 100); 83 g.setColor(Color.black); 84 Font font1 = new Font("MS Pゴシック",Font.PLAIN,30); 85 g.setFont(font1); 86 g.drawString(time,50,150); 87 88 89 90 sec++; 91 92 93 } 94 95 96 97} 98 public static void main(String[] args) { 99 100 JFrame f = new Windows6(); 101 f.setTitle("スライダー"); 102 f.setBounds(10, 10, 300, 300); 103 104 f.setVisible(true); 105 106 } 107}
回答2件
あなたの回答
tips
プレビュー