jestem świerzym użytkownikiem tego forum. na początku wszystkich witam
zaczynam swoją przygodę z jezykiem programowania jakim jest JAVA.
i po paru dniach :) udało mi sie napisac prosty programik odliczający takt, chciałbym dopisać do niego jeszcze coś na zasadzie paska postępu uciekającego czasu do kolejnego taktu
program podzieliłem na 3 wątki
i tak
Test.java
public class Test
{
public static void main(String[] args)
{
Andom adm = new Andom();
adm.setVisible(true);
}
}
Timer.java
public class Timer extends Thread
{
Andom adm;
double sCzas;
Timer(Andom andom)
{
adm = andom;
}
public void SetTime(double time)
{
sCzas = time;
}
public void run() {
while (true)
{
try{sleep((long) sCzas);}
catch (InterruptedException e){}
adm.Timer();
}
}
}
i właściwy w którym jest cały kod
Andom.java
import java.awt.*;
import java.awt.event.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.swing.*;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
public class Andom extends JFrame implements KeyListener, ActionListener
{
private static final long serialVersionUID = 1L;
JPanel p;
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
JPanel p4=new JPanel();
JPanel p5=new JPanel();
JLabel l1=new JLabel("taktomierz");
JLabel l4=new JLabel("4");
JLabel l6=new JLabel("6");
JLabel l8=new JLabel("8");
JLabel l9=new JLabel("9");
JLabel l10=new JLabel("10");
JLabel lkomunikat=new JLabel("");
Timer timer;
JMenuBar mb=new JMenuBar();
JMenu mplik=new JMenu("Plik");
JMenuItem mizamknij=new JMenuItem("Zamknij");
JMenuItem miczas=new JMenuItem("zmiana czasu taktu");
JMenuItem mizero=new JMenuItem("zerowanie");
JMenuItem miabout=new JMenuItem("About");
int liczba = Integer.parseInt(l4.getText());
int liczba2 = Integer.parseInt(l10.getText());
int takt;
int wtakt;
int taktP;
int wtaktP;
int plan;
int ist;
int soll;
int prod;
@SuppressWarnings("deprecation")
public Andom()
{
super( "Andom" );
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
setSize(1280,768);
mplik.add(miczas);
mplik.add(mizero);
mplik.add(mizamknij);
setJMenuBar(mb);
mb.add(mplik);
mb.add(miabout);
mizamknij.addActionListener(this);
miabout.addActionListener(this);
miczas.addActionListener(this);
mizero.addActionListener(this);
l1.setVerticalTextPosition(JLabel.CENTER);
l1.setHorizontalAlignment(JLabel.CENTER);
l1.setFont(new Font("Dialog",Font.BOLD,60));
l4.setVerticalTextPosition(JLabel.CENTER);
l4.setHorizontalAlignment(JLabel.CENTER);
l4.setFont(new Font("Dialog",Font.BOLD,160));
l6.setVerticalTextPosition(JLabel.CENTER);
l6.setHorizontalAlignment(JLabel.CENTER);
l6.setFont(new Font("Dialog",Font.BOLD,120));
l8.setVerticalTextPosition(JLabel.CENTER);
l8.setHorizontalAlignment(JLabel.CENTER);
l8.setFont(new Font("Dialog",Font.BOLD,70));
lkomunikat.setVerticalTextPosition(JLabel.CENTER);
lkomunikat.setHorizontalAlignment(JLabel.CENTER);
lkomunikat.setFont(new Font("Dialog",Font.BOLD,50));
l10.setVerticalTextPosition(JLabel.CENTER);
l10.setHorizontalAlignment(JLabel.CENTER);
l10.setFont(new Font("Dialog",Font.BOLD,50));
p=(JPanel)getContentPane();
p.add(p1,BorderLayout.NORTH);
p1.setLayout(new GridLayout(1,3));
p1.setPreferredSize(new Dimension (MAXIMIZED_HORIZ,100));
p1.setBackground(Color.GREEN);
p1.add(l1);
p.add(p2,BorderLayout.CENTER);
p2.setLayout(new GridLayout(3,2));
p2.add(l4);
p2.add(l8);
p.add(p3,BorderLayout.SOUTH);
p3.setLayout(new GridLayout(1,1));
p3.setPreferredSize(new Dimension (MAXIMIZED_HORIZ,100));
p3.setBackground(Color.green);
p3.add(lkomunikat);
timer = new Timer(this);
timer.start();
timer.suspend();
lkomunikat.setText(("naciśnij start"));
String sCzas = JOptionPane.showInputDialog("podaj czas w sekundach");
double czas = Double.parseDouble(sCzas);
timer.SetTime(czas*1000);
setFocusable(true);
addKeyListener(this);
setVisible(true);
}
public void keyPressed(KeyEvent e){}
@SuppressWarnings("deprecation")
public void keyReleased(KeyEvent e)
{
if (e.getKeyCode()==116) // f5
{
timer.resume();
lkomunikat.setText(("Praca"));
}
else if (e.getKeyCode()==118) // f7
{
timer.suspend();
lkomunikat.setText(("Przerwa"));
}
}
public void keyTyped(KeyEvent e)
{}
@SuppressWarnings("deprecation")
public void actionPerformed (ActionEvent e)
{
if(e.getSource()==mizamknij)
System.exit(0);
else if(e.getSource()==miczas)
{
String sTakt = JOptionPane.showInputDialog("podaj czas w sekundach");
wtakt = Integer.parseInt(sTakt);
takt = (wtakt*1000);
timer.SetTime(takt);
}
else if(e.getSource()==mizero)
{
l4.setText(Integer.toString(liczba=0));
lkomunikat.setText(("naciśnij start"));
timer.suspend();
}
else if(e.getSource()==miabout)
JOptionPane.showMessageDialog(null,"Czas taktu: linii = "+ (wtakt) + " s.");
}
public void Timer() {
liczba ++;
l4.setText(String.valueOf(liczba));
cykl1();
}
public void cykl1()
{
AudioStream BGM;
try
{
InputStream test = new FileInputStream("ding.wav");
BGM = new AudioStream(test);
AudioPlayer.player.start(BGM);
System.out.println("cykl1");
}
catch(FileNotFoundException e)
{
System.out.print(e.toString());
}
catch(IOException error)
{
System.out.print(error.toString());
}
}
}
Wiem, że można to jeszcze zoptymalizowac ale nie wiem jak,
proszę o pomoc jak dodać tutaj JprogresBar albo coś takiego...
Dziękuję wszystkim za pomoc