Hi Leute,
ich hab für nen Kumpel mal ein Beispielprogramm geschrieben um zu veranschaulichen wie Threads eigentlich funktionieren.
Nichts aufwendiges und es soll nur grob darstellen was Threads sind.
Wenns von annehmbarer Qualität ist können die Anderen das auch gern nutzen.
Mainklasse mit view und controller:
Einzelner Thread:
MfG
ich hab für nen Kumpel mal ein Beispielprogramm geschrieben um zu veranschaulichen wie Threads eigentlich funktionieren.
Nichts aufwendiges und es soll nur grob darstellen was Threads sind.
Wenns von annehmbarer Qualität ist können die Anderen das auch gern nutzen.
Mainklasse mit view und controller:
Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ListModel;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;
public class View extends javax.swing.JFrame {
private JButton buttonStart;
private JTextArea list1;
private JScrollPane jScrollPane1;
private AbstractAction startAction1;
private int winPosX;
private int winPosY;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
View inst = new View();
inst.setLocationRelativeTo(null);
inst.setTitle("Threadtest");
inst.setVisible(true);
}
});
}
public View() {
super();
initGUI();
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
{
buttonStart = new JButton();
getContentPane().add(buttonStart, "South");
getContentPane().add(getJScrollPane1());
buttonStart.setText("Start");
buttonStart.setBounds(113, 216, 148, 41);
buttonStart.setAction(getStartAction1());
}
pack();
setSize(400, 300);
} catch (Exception e) {
e.printStackTrace();
}
}
private AbstractAction getStartAction1() {
if(startAction1 == null) {
startAction1 = new AbstractAction("Start", null) {
public void actionPerformed(ActionEvent evt) {
Thread th = new Thread(new ThreadOperation(list1,winPosX,winPosY));
th.start();
winPosX = winPosX + 10;
winPosY = winPosY + 10;
}
};
}
return startAction1;
}
private JTextArea getList1() {
if(list1 == null) {
list1 = new JTextArea();
list1.setBounds(12, 12, 366, 192);
}
return list1;
}
private JScrollPane getJScrollPane1() {
if(jScrollPane1 == null) {
jScrollPane1 = new JScrollPane();
jScrollPane1.setBounds(12, 12, 366, 192);
jScrollPane1.setViewportView(getList1());
}
return jScrollPane1;
}
}
Einzelner Thread:
Java:
import javax.swing.JTextPane;
import java.util.Random;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;
public class ThreadOperation extends javax.swing.JFrame implements Runnable {
private JTextArea output1;
private JScrollPane jScrollPane1;
private JProgressBar progressBar1;
private JTextArea list;
public ThreadOperation(JTextArea list, int pX, int pY) {
super();
initGUI();
this.setLocation(pX,pY);
this.setVisible(true);
this.list = list;
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);
{
jScrollPane1 = new JScrollPane();
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(0, 0, 390, 215);
{
output1 = new JTextArea();
jScrollPane1.setViewportView(output1);
output1.setBounds(0, 0, 390, 215);
}
}
{
progressBar1 = new JProgressBar();
getContentPane().add(progressBar1);
progressBar1.setBounds(0, 227, 390, 29);
}
pack();
setSize(400, 300);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
this.setTitle(Thread.currentThread().getName());
Random ran = new Random();
int ranInt = ran.nextInt(100);
list.append(Thread.currentThread().getName() + " started with " + ranInt + "\n");
for(int i=0; i < ranInt; i++) {
try {
output1.append(Thread.currentThread().getName() + ": " + i + "\n");
progressBar1.setValue(i);
Thread.sleep(i*ran.nextInt(10));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
list.append(Thread.currentThread().getName() + " ended \n");
}
}
MfG