Ekran görüntüsü:

Uygulama Kodları:
/*
* Ramazan Bellek
*
* Sakarya University Computer Engineering Department
* Data Communication / Signal Generator Application
*
* File: Grafik.java
*
* 2009
*/
package dataComm;
import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import javax.swing.JPanel;
class Koordinat
{
public Koordinat(int x,int y,Color c)
{
this.x=x;
this.y=y;
this.c=c;
}
public int x,y;
public Color c;
}
class Yazi
{
public String yazi;
public Koordinat k;
public Yazi(String yazi, Koordinat k)
{
this.yazi=yazi;
this.k=k;
}
}
public class Grafik extends JPanel {
private ArrayList<Koordinat> koordinatlar;
private ArrayList<Yazi> yazilar;
private Color c;
public Grafik()
{
super();
koordinatlar = new ArrayList<Koordinat>();
yazilar = new ArrayList<Yazi>();
c=Color.BLUE;
}
@Override
public void paint(Graphics g)
{
g.setColor(Color.BLACK);
g.fill3DRect(0, 0, 800, 400, false);
for(Koordinat k : koordinatlar)
{
g.setColor(k.c);
g.fillOval(k.x, k.y, 1, 1); // Windows için g.fillOval(k.x, k.y, 2, 2);
// Mac OSX (Unix) için g.fillOval(k.x, k.y, 1, 1);
}
for(Yazi y : yazilar)
{
g.setColor(y.k.c);
g.drawString(y.yazi, y.k.x, y.k.y);
}
}
public void noktaCiz(int x, int y,Color c)
{
koordinatlar.add(new Koordinat(x,y,c));
}
public void yaziYaz(String yazi, int x, int y, Color c)
{
yazilar.add(new Yazi(yazi,new Koordinat(x,y,c)));
}
public void yenile()
{
repaint();
}
public void temizle()
{
koordinatlar.clear();
}
public void renkSec(Color c)
{
this.c=c;
}
}
/*
* Ramazan Bellek
*
* Sakarya University Computer Engineering Department
* Data Communication / Signal Generator Application
*
* File: Sinyal.java
*
* 2009
*/
package dataComm;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Sinyal extends JFrame{
public static float PI = 3.14159265358979323846f;
public static int freq = 1;
public static int amp = 10;
public static int har = 1;
public static boolean goster = false;
private JButton btnCiz;
private JPanel pnlKontrol;
private JPanel pnlBilgi;
private JPanel pnlTuslar;
private Grafik grafik;
private JTextField tfAmp;
private JLabel lbAmp;
private JTextField tfFreq;
private JLabel lbFreq;
private JTextField tfHar;
private JLabel lbHar;
private JCheckBox cbGoster;
private JLabel lbGoster;
private JLabel lbBilgi;
public static void main(String[] args)
{
new Sinyal("Data Communication / Sinyal Generator");
}
public Sinyal(String baslik)
{
super(baslik);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
Dimension ebat = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds(ebat.width/2-400,ebat.height/2-300,800,600);
setDefaultLookAndFeelDecorated(true);
setLayout(new BorderLayout());
initComponents();
setVisible(true);
}
private void initComponents()
{
pnlKontrol = new JPanel();
pnlKontrol.setPreferredSize(new Dimension(800,200));
pnlKontrol.setLayout(new BorderLayout());
this.getContentPane().add(pnlKontrol,BorderLayout.SOUTH);
pnlTuslar = new JPanel();
pnlTuslar.setPreferredSize(new Dimension(800,100));
pnlTuslar.setLayout(new FlowLayout());
pnlKontrol.add(pnlTuslar,BorderLayout.NORTH);
pnlBilgi = new JPanel();
pnlBilgi.setPreferredSize(new Dimension(800,100));
pnlKontrol.add(pnlBilgi,BorderLayout.SOUTH);
btnCiz = new JButton("ReDraw");
btnCiz.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try
{
grafik.temizle();
Sinyal.amp=Integer.parseInt(tfAmp.getText());
Sinyal.freq=Integer.parseInt(tfFreq.getText());
Sinyal.har=Integer.parseInt(tfHar.getText());
if (cbGoster.isSelected())
goster=true;
else goster=false;
}catch(Exception e)
{
Sinyal.amp=10;
Sinyal.freq=1;
Sinyal.har=1;
System.err.println(e.getMessage());
}
drawCoordinates();
generateSinus();
}
});
tfAmp=new JTextField(5);
tfAmp.setText("10");
lbAmp=new JLabel("Amplitude:");
pnlTuslar.add(lbAmp);
pnlTuslar.add(tfAmp);
tfFreq=new JTextField(5);
tfFreq.setText("1");
lbFreq = new JLabel("Frequency:");
pnlTuslar.add(lbFreq);
pnlTuslar.add(tfFreq);
lbHar = new JLabel("Harmonics:");
tfHar = new JTextField(5);
tfHar.setText("1");
pnlTuslar.add(lbHar);
pnlTuslar.add(tfHar);
lbGoster = new JLabel("Show sinus elements?");
pnlTuslar.add(lbGoster);
cbGoster = new JCheckBox();
cbGoster.setSelected(false);
pnlTuslar.add(cbGoster);
pnlTuslar.add(btnCiz);
lbBilgi=new JLabel("Ramazan Bellek / 2009");
pnlBilgi.add(lbBilgi);
grafik = new Grafik();
grafik.setPreferredSize(new Dimension(800,400));
grafik.setBackground(Color.BLACK);
drawCoordinates();
generateSinus();
this.getContentPane().add(grafik,BorderLayout.CENTER);
}
private void drawCoordinates()
{
for(int i=0; i<800; i++)
{
grafik.noktaCiz(i, 200,Color.BLUE);
if (i%10==0)
{
grafik.noktaCiz(i+50, 50, Color.BLUE);
grafik.noktaCiz(i+50, 100, Color.BLUE);
grafik.noktaCiz(i+50, 150, Color.BLUE);
grafik.noktaCiz(i+50, 200, Color.BLUE);
grafik.noktaCiz(i+50, 250, Color.BLUE);
grafik.noktaCiz(i+50, 300, Color.BLUE);
grafik.noktaCiz(i+50, 350, Color.BLUE);
}
}
for(int i=0; i<400; i++)
grafik.noktaCiz(50, i,Color.RED);
grafik.yaziYaz("+15", 15, 50, Color.RED);
grafik.yaziYaz("+10", 15, 100, Color.RED);
grafik.yaziYaz("+5", 15, 150, Color.RED);
grafik.yaziYaz("0", 15, 200, Color.RED);
grafik.yaziYaz("-5", 15, 250, Color.RED);
grafik.yaziYaz("-10", 15, 300, Color.RED);
grafik.yaziYaz("-15", 15, 350, Color.RED);
grafik.yenile();
}
private void generateSinus()
{
double toplam=0;
double gecici=0;
for(double i=0.1; i<800; i+=1)
{
for(int j=1; j<=Sinyal.har; j+=2)
{
gecici=4*Sinyal.amp/(Sinyal.PI*j)*10*Math.sin(2*Sinyal.PI*Sinyal.freq*j*i/360);
toplam+=gecici;
if (goster)
grafik.noktaCiz((int)(50+i),(int)(200-gecici),Color.CYAN);
}
grafik.noktaCiz((int)(50+i),(int)(200-toplam),Color.MAGENTA);
toplam=0;
}
grafik.yenile();
}
}