import java.awt.*; import java.awt.event.*; import javax.swing.*; public class F7_exempel3 extends JFrame implements ActionListener { private JButton startKnapp; private JPanel nordPanel, centerPanel; public F7_exempel3() { skapaGränssnitt(); setVisible(true); } private void skapaGränssnitt() { setSize(200,200); Container korg = getContentPane(); korg.setLayout(new BorderLayout()); startKnapp = new JButton("Starta utskriftstrådarna"); startKnapp.addActionListener(this); nordPanel = new JPanel(); nordPanel.setSize(200, 50); nordPanel.add(startKnapp); centerPanel = new JPanel(); centerPanel.setBackground(Color.white); korg.add(nordPanel, BorderLayout.NORTH); korg.add(centerPanel, BorderLayout.CENTER); setDefaultCloseOperation(EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent ae) { if(ae.getSource() == startKnapp) { Trad t1 = new Trad("#1", 3000, centerPanel, 20); Trad t2 = new Trad("#2", 1500, centerPanel, 30); t1.start(); t2.start(); } } public static void main(String[] args) { new F7_exempel3(); } }//F7_exempel3 class Trad extends Thread { private String trådNamn; private int x, y, sovTid; private JPanel centerPanel ; public Trad(String trådNamn, int sovTid, JPanel centerPanel, int yKoordinat) { this.trådNamn = trådNamn; this.sovTid = sovTid; this.centerPanel = centerPanel; x = 20; y = yKoordinat; } public void run() { skriv(); try { sleep(sovTid); } catch (InterruptedException ie) { System.err.println("TRASSEL i " + trådNamn); System.err.println(ie.getMessage()); } y += 40; skriv(); } public void skriv() { Graphics penna = centerPanel.getGraphics(); penna.drawString("Hej, skriver: " + trådNamn, x, y); penna.dispose(); } }//Trad