i proszę o wyrozumiałość, jestm początkującym programistą, i dostałem zadanie aby wykonać program, który by pokazywał postepy na linii produkcyjnej w jednym oknie wartość by sie zmieniała co określony czas (i wydawała dźwięk - tego nie wiem jak zrobić) w drugim wartość by się zminiała przy naciśnięciu przycisku. Napisałem taki zlepek z tutoriali na necie, ale wymaga duzo poprawy nie wiem jak to poprawić aby wszystki dane były we właściwych miejscach. i aby to działało prawidłowo
napisałem to w 3 plikach, tak mi doradzili.
Timer.java
Kod: Zaznacz cały
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();
}
}
}
Kod: Zaznacz cały
import java.awt.EventQueue;
public class Test
{
public static void main(String[] args)
{
Andom adm = new Andom();
adm.setVisible(true);
}
}
Kod: Zaznacz cały
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Andom extends JFrame implements KeyListener, ActionListener
{
private static final long serialVersionUID = 1L;
JPanel p; //def panela głównego p cała ramka
JPanel p1=new JPanel();//def panela p1
JPanel p2=new JPanel();//def panela p2
JPanel p3=new JPanel();//def panela p3
JPanel p4=new JPanel();//def panela p4
JPanel p5=new JPanel();//def panela p4
JLabel l1=new JLabel("produkcja");
JLabel l2=new JLabel("CEL");
JLabel l3=new JLabel("JEST");
JLabel l4=new JLabel("0");
JLabel l5=new JLabel("0");
JLabel l6=new JLabel("l6");
JLabel l7=new JLabel("Planowana ilosc na zmiane:");
JLabel l8=new JLabel("0");
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");
JMenuItem miplan=new JMenuItem("zmiana planu");
JMenuItem miist=new JMenuItem("ustaw wartość IST");
JMenuItem mizero=new JMenuItem("zerowanie");
JMenuItem misoll=new JMenuItem("ustaw wartość SOLL");
JMenuItem miabout=new JMenuItem("About");
int liczba = Integer.parseInt/*pobrany tekst konwertuj na typ int*/(l4.getText()/*tu pobierz text z l4*/);
int wartosc = Integer.parseInt/*pobrany tekst konwertuj na typ int*/(l5.getText()/*tu pobierz text z l5*/);
int takt;
public Andom()
{
super( "Andom" );
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(1024,768);
mplik.add(miczas);
mplik.add(miplan);
mplik.add(misoll);
mplik.add(miist);
mplik.add(mizero);
mplik.add(mizamknij);
setJMenuBar(mb);
mb.add(mplik);
mb.add(miabout);
mizamknij.addActionListener(this);
miabout.addActionListener(this);
miczas.addActionListener(this);
miist.addActionListener(this);
misoll.addActionListener(this);
mizero.addActionListener(this);
miplan.addActionListener(this);
l1.setVerticalTextPosition(JLabel.CENTER);
l1.setHorizontalAlignment(JLabel.CENTER);
l1.setFont(new Font("Dialog",Font.BOLD,60));
l2.setVerticalTextPosition(JLabel.CENTER);
l2.setHorizontalAlignment(JLabel.CENTER);
l2.setFont(new Font("Dialog",Font.BOLD,50));
l3.setVerticalTextPosition(JLabel.CENTER);
l3.setHorizontalAlignment(JLabel.CENTER);
l3.setFont(new Font("Dialog",Font.BOLD,50));
l4.setVerticalTextPosition(JLabel.CENTER);
l4.setHorizontalAlignment(JLabel.CENTER);
l4.setFont(new Font("Dialog",Font.BOLD,160));
l5.setVerticalTextPosition(JLabel.CENTER);
l5.setHorizontalAlignment(JLabel.CENTER);
l5.setFont(new Font("Dialog",Font.BOLD,160));
l6.setVerticalTextPosition(JLabel.CENTER);
l6.setHorizontalAlignment(JLabel.CENTER);
l6.setFont(new Font("Dialog",Font.BOLD,120));
l7.setVerticalTextPosition(JLabel.CENTER);
l7.setHorizontalAlignment(JLabel.CENTER);
l7.setFont(new Font("Dialog",Font.BOLD,35));
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));
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(l2);
p2.add(l3);
p2.add(l4);
p2.add(l5);
p2.add(l7);
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"));
JOptionPane.showMessageDialog(null,"Podaj planowaną ilość , czas wyliczy się automatycznie dla 440 minut :)");
//String sCzas = JOptionPane.showInputDialog("podaj czas w sekundach");
String sPlan = JOptionPane.showInputDialog("podaj planowaną ilość ");
//double czas = Double.parseDouble(sCzas);
double plan = Double.parseDouble(sPlan);
l8.setText((sPlan));
takt = (int) (27000 / plan);
timer.SetTime(27000000 / plan);
System.out.println(takt);
setFocusable(true);
addKeyListener(this);
setVisible(true);
}
@SuppressWarnings("deprecation")
public void keyPressed(KeyEvent e){
}
public void keyReleased(KeyEvent e)
{
if (e.getKeyCode()==120) // f9
{
l5.setText(Integer.toString(++wartosc));
}
else if (e.getKeyCode()==109) // -
{
l5.setText(Integer.toString(--wartosc));
}
else if (e.getKeyCode()==119) // f8
{
l4.setText(Integer.toString(liczba=0));
l5.setText(Integer.toString(wartosc=0));
l8.setText(Integer.toString(wartosc=0));
lkomunikat.setText(("naciśnij start"));
timer.suspend();
}
else if (e.getKeyCode()==116) // f5
{
timer.resume();
lkomunikat.setText(("Praca"));
}
else if (e.getKeyCode()==118) // f7
{
timer.suspend();
lkomunikat.setText(("Pausa"));
}
else if (e.getKeyCode()==117) // f6
{
lkomunikat.setText(("AWARIA"));
timer.suspend();
}
}
public void keyTyped(KeyEvent e)
{
}
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");
double takt = Double.parseDouble(sTakt);
takt = (takt*1000);
timer.SetTime(takt);
}
else if(e.getSource()==miplan)
{
String sPlan = JOptionPane.showInputDialog("podaj planowaną ilość");
Double plan = Double.parseDouble(sPlan);
l8.setText((sPlan));
}
else if(e.getSource()==mizero)
{
l4.setText(Integer.toString(liczba=0));
l5.setText(Integer.toString(wartosc=0));
l8.setText(Integer.toString(wartosc=0));
lkomunikat.setText(("naciśnij start"));
timer.suspend();
}
else if(e.getSource()==miist)
{
String sIst = JOptionPane.showInputDialog("podaj ilość IST");
Double ist = Double.parseDouble(sIst);
l5.setText((sIst));
}
else if(e.getSource()==misoll)
{
String sSoll = JOptionPane.showInputDialog("podaj ilość SOLL");
Double soll = Double.parseDouble(sSoll);
l4.setText((sSoll));
}
else if(e.getSource()==miabout)
JOptionPane.showMessageDialog(null,"Czas taktu = "+ (takt) + " s.");
}
public void Timer() {
liczba ++;//zwiększ o 1
l4.setText(String.valueOf(liczba)/*konwertuj liczbę int na String*/);//l4 pobierz tekst
}
}
;
Pozdrawiam
bicker