Java-hjälp tack|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Java-hjälp tack
sofia
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 23
Member Since:
September 2, 2002
sp_UserOfflineSmall Offline
1
May 2, 2003 - 9:58 pm
sp_Permalink sp_Print

Jag har grymma problem med trådning. Jag tänkte ha en basklass (Applet) som allt ska köras ifrån och två subklasser med olika trådar. Den ena trådklassen ska ärva fr Thread och den andra ska implementera fr Runnable-gränssnittet.

Respektive tråd ska i en loop i run-metoden kunna skriva ut meddelandet Utskrift från tråd 1 och Utskrift från tråd 2 i programmets text-area. Utskriften ska göras en gång per sekund. Vid tryck på den ena knappen ska tråd 1 aktiveras och texten på knappen ska ändras till "Deaktivera utskrift från tråd 1". Ett tryck till på samma knapp ska deaktivera tråd 1 (det vill säga stoppa tråd 1 helt) och texten på knappen ska återställas till "Aktivera utskrift från tråd 1". Motsvarande gäller för den andra knappen men för tråd 2.

Ingenting funkar... jag är heeeeeeeeelt lost. Snälla någon hjälp

Så här ser min kod ut hittills:

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;

public class Uppgift4A extends Applet implements ActionListener {

private Label l = new Label("Tryck på valfri knapp för start ", Label.CENTER);
private Button ThreadOne = new Button ("Thread One");
private Button ThreadTwo = new Button ("Thread Two");

public void init() {
setLayout (new GridLayout(2,1)); //2 rader, 1 kolumn
Panel p = new Panel();
add(l); add(p);
p.add(ThreadOne); p.add(ThreadTwo);
setBackground(Color.white); //arbetsytan vit
l.setFont (new Font ("SansSerif", Font.ITALIC, 20));

ThreadOne.addActionListener (this);
ThreadTwo.addActionListener (this);
//ThreadOne.setEnabled (false);
}

public void actionPerformed (ActionEvent e) {
if (e.getSource() == ThreadOne) {
l.setText("Thread One Pushed");
//ThreadOne.setText ("I'm pushed");
ThreadOne.setEnabled (false);
ThreadTwo.setEnabled (true);
}

else if (e.getSource() == ThreadTwo) {
l.setText("Thread TwoPushed");
ThreadTwo.setEnabled (false);
ThreadOne.setEnabled (true);
}

}
}

Så ena trådklassen (där jag lekt lite bara för att kolla om något fungerar... men inte då :

class ThreadOne implements Runnable {
JTextField t;

public ThreadOne (JTextField text) {
t = text;
}

public void run() {
int i = 0;
while (i<1000) {
t.setText (""+i);
i++;
}
}
}

GRYYYYYYYMT tacksam för hjälp av er programmeringsproffs

arte
Kommer du hit ofta?
Medlem
Forum Posts: 301
Member Since:
January 7, 2003
sp_UserOfflineSmall Offline
326970
May 3, 2003 - 7:19 am
sp_Permalink sp_Print

sofia wrote: Jag har grymma problem med trådning. Jag tänkte ha en basklass (Applet) som allt ska köras ifrån och två subklasser med olika trådar. Den ena trådklassen ska ärva fr Thread och den andra ska implementera fr Runnable-gränssnittet.

Respektive tråd ska i en loop i run-metoden kunna skriva ut meddelandet Utskrift från tråd 1 och Utskrift från tråd 2 i programmets text-area. Utskriften ska göras en gång per sekund. Vid tryck på den ena knappen ska tråd 1 aktiveras och texten på knappen ska ändras till "Deaktivera utskrift från tråd 1". Ett tryck till på samma knapp ska deaktivera tråd 1 (det vill säga stoppa tråd 1 helt) och texten på knappen ska återställas till "Aktivera utskrift från tråd 1". Motsvarande gäller för den andra knappen men för tråd 2.

Ingenting funkar... jag är heeeeeeeeelt lost. Snälla någon hjälp

Så här ser min kod ut hittills:

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;

public class Uppgift4A extends Applet implements ActionListener {

private Label l = new Label("Tryck på valfri knapp för start ", Label.CENTER);
private Button ThreadOne = new Button ("Thread One");
private Button ThreadTwo = new Button ("Thread Two");

public void init() {
setLayout (new GridLayout(2,1)); //2 rader, 1 kolumn
Panel p = new Panel();
add(l); add(p);
p.add(ThreadOne); p.add(ThreadTwo);
setBackground(Color.white); //arbetsytan vit
l.setFont (new Font ("SansSerif", Font.ITALIC, 20));

ThreadOne.addActionListener (this);
ThreadTwo.addActionListener (this);
//ThreadOne.setEnabled (false);
}

public void actionPerformed (ActionEvent e) {
if (e.getSource() == ThreadOne) {
l.setText("Thread One Pushed");
//ThreadOne.setText ("I'm pushed");
ThreadOne.setEnabled (false);
ThreadTwo.setEnabled (true);
}

else if (e.getSource() == ThreadTwo) {
l.setText("Thread TwoPushed");
ThreadTwo.setEnabled (false);
ThreadOne.setEnabled (true);
}

}
}

Så ena trådklassen (där jag lekt lite bara för att kolla om något fungerar... men inte då :

class ThreadOne implements Runnable {
JTextField t;

public ThreadOne (JTextField text) {
t = text;
}

public void run() {
int i = 0;
while (i<1000) {
t.setText (""+i);
i++;
}
}
}

GRYYYYYYYMT tacksam för hjälp av er programmeringsproffs

du startar aldrig threaden ju (ThreadOne.start() ) sedan så kanske du måste uppdatrera textfälttet med .shw

sofia
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 23
Member Since:
September 2, 2002
sp_UserOfflineSmall Offline
327028
May 3, 2003 - 9:22 am
sp_Permalink sp_Print

Vad är .shw för något? Jag har försökt starta tråden i if-satsen men det går inte. Är det inte därifrån den ska startas?

arte
Kommer du hit ofta?
Medlem
Forum Posts: 301
Member Since:
January 7, 2003
sp_UserOfflineSmall Offline
328578
May 5, 2003 - 6:38 am
sp_Permalink sp_Print

sofia wrote: Jag har grymma problem med trådning. Jag tänkte ha en basklass (Applet) som allt ska köras ifrån och två subklasser med olika trådar. Den ena trådklassen ska ärva fr Thread och den andra ska implementera fr Runnable-gränssnittet.

Respektive tråd ska i en loop i run-metoden kunna skriva ut meddelandet Utskrift från tråd 1 och Utskrift från tråd 2 i programmets text-area. Utskriften ska göras en gång per sekund. Vid tryck på den ena knappen ska tråd 1 aktiveras och texten på knappen ska ändras till "Deaktivera utskrift från tråd 1". Ett tryck till på samma knapp ska deaktivera tråd 1 (det vill säga stoppa tråd 1 helt) och texten på knappen ska återställas till "Aktivera utskrift från tråd 1". Motsvarande gäller för den andra knappen men för tråd 2.

Ingenting funkar... jag är heeeeeeeeelt lost. Snälla någon hjälp

Så här ser min kod ut hittills:

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;

public class Uppgift4A extends Applet implements ActionListener {

private Label l = new Label("Tryck på valfri knapp för start ", Label.CENTER);
private Button ThreadOne = new Button ("Thread One");
private Button ThreadTwo = new Button ("Thread Two");

public void init() {
setLayout (new GridLayout(2,1)); //2 rader, 1 kolumn
Panel p = new Panel();
add(l); add(p);
p.add(ThreadOne); p.add(ThreadTwo);
setBackground(Color.white); //arbetsytan vit
l.setFont (new Font ("SansSerif", Font.ITALIC, 20));

ThreadOne.addActionListener (this);
ThreadTwo.addActionListener (this);
//ThreadOne.setEnabled (false);
}

public void actionPerformed (ActionEvent e) {
if (e.getSource() == ThreadOne) {
l.setText("Thread One Pushed");
//ThreadOne.setText ("I'm pushed");
ThreadOne.setEnabled (false);
ThreadTwo.setEnabled (true);
}

else if (e.getSource() == ThreadTwo) {
l.setText("Thread TwoPushed");
ThreadTwo.setEnabled (false);
ThreadOne.setEnabled (true);
}

}
}

Så ena trådklassen (där jag lekt lite bara för att kolla om något fungerar... men inte då :

class ThreadOne implements Runnable {
JTextField t;

public ThreadOne (JTextField text) {
t = text;
}

public void run() {
int i = 0;
while (i<1000) {
t.setText (""+i);
i++;
}
}
}

GRYYYYYYYMT tacksam för hjälp av er programmeringsproffs

du skapar aldrig tråden!
klassen ThreadOne används aldrig eller skapas aldrig.

sofia
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 23
Member Since:
September 2, 2002
sp_UserOfflineSmall Offline
328662
May 5, 2003 - 10:01 am
sp_Permalink sp_Print

Men HUR använder jag och skapar den då? Jag förstår ju inte det. Varför inte förklara el visa då du som kan. :snurr:

Jerry
Member
Medlem
Forum Posts: 4381
Member Since:
June 18, 2001
sp_UserOfflineSmall Offline
328745
May 5, 2003 - 11:55 am
sp_Permalink sp_Print

Du kanske ska döpa om dina 'Button'-objekt. Det är ganska förvirrande med samma namn på dem som på din trådklass.

sofia
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 23
Member Since:
September 2, 2002
sp_UserOfflineSmall Offline
328759
May 5, 2003 - 12:26 pm
sp_Permalink sp_Print

Okej Nu har jag ändrat lite i koden. Kan någon hjälpa mig nu??? cry

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
import java.util.*;

public class HelpMe extends Applet implements Runnable, ActionListener {

private Label l = new Label("Tryck på valfri knapp för start ", Label.CENTER);
private Button b1 = new Button ("Thread One");
private Button b2 = new Button ("Thread Two");
public Thread ThreadOne = new Thread();
Thread ThreadTwo = new Thread();

public void init() {
setLayout (new GridLayout(2,1)); //2 rader, 1 kolumn
Panel p = new Panel();
add(l); add(p);
p.add(b1); p.add(b2);
setBackground(Color.white); //arbetsytan vit
l.setFont (new Font ("SansSerif", Font.ITALIC, 20));

b1.addActionListener (this);
b2.addActionListener (this);
//b1.setEnabled (false);
}

public void run() {

}

public void actionPerformed (ActionEvent e) {
if (e.getSource() == b1) {
ThreadOne.start();
l.setText("Thread One Pushed");
//b1.setText ("I'm pushed");
b1.setEnabled (false);
b2.setEnabled (true);
System.out.println("Ettan tryckt");
}

else if (e.getSource() == b2) {
l.setText("Thread TwoPushed");
b2.setEnabled (false);
b1.setEnabled (true);
//b2.setText ("Jag är tryckt");
System.out.println("Tvåan tryckt");
}

}
}

jonaz
Kommer du hit ofta?
Medlem
Forum Posts: 940
Member Since:
May 8, 2001
sp_UserOfflineSmall Offline
332894
May 10, 2003 - 4:43 pm
sp_Permalink sp_Print

Nu funkar den men det händer inte så mkt förutom att det skrivs ut "Do something" iaf om man startar det som ett program (se main-metod) tills programmet stannas. Vet inte vad målet med uppgiften är men detta kanske hjälper på vägen!?

Snälla! Sariabler med liten begynnelsebokstav! T.ex. "ThreadOne" ska vara "threadOne".

Dessutom är det bra om man använder "Code" knappen när man postar kod så att den blir indenterad!

Ser ut som en uppgift jag gjorde på DSV i Kista för några år sen?

Lycka till!


import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
import java.util.*;

public class HelpMe extends Applet implements Runnable, ActionListener {

private Label l = new Label("Tryck på valfri knapp för start ", Label.CENTER);
private Button b1 = new Button ("Thread One");
private Button b2 = new Button ("Thread Two");
private Thread ThreadOne, ThreadTwo;

public void init() {
setLayout (new GridLayout(2,1)); //2 rader, 1 kolumn
Panel p = new Panel();
add(l); add(p);
p.add(b1); p.add(b2);
setBackground(Color.white); //arbetsytan vit
l.setFont (new Font ("SansSerif", Font.ITALIC, 20));

b1.addActionListener (this);
b2.addActionListener (this);
//b1.setEnabled (false);
// Skapa trådarna här så att du kan skicka med "this" till konstruktorn
// annars funkar det inte.
ThreadOne = new Thread( this );
ThreadTwo = new Thread( this );
}

public void run() {
while( true ) {
// Gör något (slutar aldrig)
System.out.println( "Do something" );
}
}

public void actionPerformed (ActionEvent e) {
if (e.getSource() == b1) {
ThreadOne.start();
l.setText("Thread One Pushed");
//b1.setText ("I'm pushed");
b1.setEnabled (false);
b2.setEnabled (true);
System.out.println("Ettan tryckt");
}

else if (e.getSource() == b2) {
l.setText("Thread TwoPushed");
b2.setEnabled (false);
b1.setEnabled (true);
//b2.setText ("Jag är tryckt");
System.out.println("Tvåan tryckt");
}
}
/**
* Denna metod ska bort, bara för test
* Klassen måste ärva Frame om detta ska funka:
* public class HelpMe extends Frame implements Runnable, ActionListener {
*/
public static void main( String args[] ) {
HelpMe test = new HelpMe();
test.init();
test.setVisible( true );
}
}

Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB

jonaz
Kommer du hit ofta?
Medlem
Forum Posts: 940
Member Since:
May 8, 2001
sp_UserOfflineSmall Offline
332898
May 10, 2003 - 4:49 pm
sp_Permalink sp_Print

Jaha ja, nu läste jag frågan... Kommer mera!

Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB

sofia
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 23
Member Since:
September 2, 2002
sp_UserOfflineSmall Offline
333318
May 11, 2003 - 11:20 am
sp_Permalink sp_Print

Oj... tack, vad gulligt att hjälpa till, men tyvärr lite för sent. jag hade redan löst det på egen hand :blink:

Men återigen tack ändå 😛 för att ni tar er tid //Fia

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 694
Currently Online:
Guest(s) 38
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL