Vinnaren i pepparkakshustävlingen!
2020-03-24, 13:20
  #1
Medlem
http://fy.chalmers.se/~f96hajo/old/s.../SortDemo.java

Det här ser intressant ut men jag hittar inget main.
Var ska det placeras?
Citera
2020-03-24, 14:18
  #2
Moderator
Neksnors avatar
Det är en applet (se classdeklarationen) och där startas programmet i init() om jag minns rätt.

Så init() == main(), typ.
Citera
2020-03-24, 15:02
  #3
Medlem
kjellbrels avatar
Citat:
Ursprungligen postat av grabb1948
http://fy.chalmers.se/~f96hajo/old/s.../SortDemo.java

Det här ser intressant ut men jag hittar inget main.
Var ska det placeras?
Som Neksnor redan nämnt så är det en applet och inte en fristående java-applikation. Applets är avsedda att bakas in och exekveras från websidor, men är ett API som Oracle håller på att skrota ("deprecated, no replacement" enl javadoc sedan Java 9).

Det är väldigt länge sedan jag höll på med, men jag minns att det fanns 2 sätt att labba och testa applets, utan att behöva blanda in en webläsare:

1. appletviewer: ett fristående verktyg i Java JDK som kunde starta applets som fristående applikationer. Vet inte om den existerar ens i senare JDK:er.

2. Bygg en egen liten Swing-applikation och baka in en applet i (typ som en egen panel), samt exekvera lifecycle-metoderna enl deras syfte (init, start etc).
Citera
2020-03-24, 18:52
  #4
Moderator
Protons avatar
Citat:
Ursprungligen postat av kjellbrel
Som Neksnor redan nämnt så är det en applet och inte en fristående java-applikation. Applets är avsedda att bakas in och exekveras från websidor, men är ett API som Oracle håller på att skrota ("deprecated, no replacement" enl javadoc sedan Java 9).

Det är väldigt länge sedan jag höll på med, men jag minns att det fanns 2 sätt att labba och testa applets, utan att behöva blanda in en webläsare:

1. appletviewer: ett fristående verktyg i Java JDK som kunde starta applets som fristående applikationer. Vet inte om den existerar ens i senare JDK:er.

2. Bygg en egen liten Swing-applikation och baka in en applet i (typ som en egen panel), samt exekvera lifecycle-metoderna enl deras syfte (init, start etc).
En gång i tiden fanns det en html-tagg som hette applet med som kunde starta java-applets ifrån en html-sida om man nu ska vara petig.

Kollar man på koden ser man årtalet 1997 längst upp. Kan ju konstatera att en hel del hänt i Java-apiet sedan dess med
__________________
Senast redigerad av Proton 2020-03-24 kl. 19:02.
Citera
2020-03-25, 16:28
  #5
Medlem
Fungerar detta bättre med dagens Java:
https://github.com/vbohush/SortingAl...bohush/sorting

jag har bara Java i Raspberry Pi.
Citera
2020-03-25, 17:07
  #6
Medlem
kjellbrels avatar
Citat:
Ursprungligen postat av Proton
En gång i tiden fanns det en html-tagg som hette applet med som kunde starta java-applets ifrån en html-sida om man nu ska vara petig.
Jo, exakt så var ju huvudsyftet med Applets. Däremot var det inte särskilt smidigt under test att behöva köra så, vilket man (eller i alla fall jag) undvek på den tiden.

Citat:
Ursprungligen postat av Proton
Kollar man på koden ser man årtalet 1997 längst upp. Kan ju konstatera att en hel del hänt i Java-apiet sedan dess med
Ja verkligen, men även om man har överseende med det föråldrade API-användandet, så lämnar koden en hel del att önska i övrigt.

Citat:
Ursprungligen postat av grabb1948
Det här ser intressant ut..
Beror lite på, skulle jag vilja säga. Inte särskilt intressant om du håller på att lära dig Java i allmänhet. Är det visualiseringen av sorteringsalgoritmerna du är intresserad av så kanske det är kul att se, men inte implementationen.

Kunde inte hålla fingrarna borta från min föreslagna punkt 2 i förra inlägget. Det lockade lite att implementera en minimal men generell AppletViewer igen (har för mig att jag gjort detta... a long time ago, in a century far far away...). Jag har inte testat den med appleten från länken, då jag av säkerhetsskäl inte kör vad som helst från okända källor och inte har tid (eller lust) att granska innehållet, så eventuellt behöver den kompletteras ytterligare. En sak jag kan tänka mig trassla är att viewern inte öppnar ett tillräckligt stort fönster. Men se då till att appleten implementerar getPreferredSize() så borde det lösa sig. Skicka in appletens fullständiga (dvs med paketnamn också) klassnamn som argument och kolla exception messages om den inte startar. Sannolikt fel classname eller classpath i så fall:
Kod:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;

public class AppletViewer extends JFrame {
	public static void main(String[] args) throws ReflectiveOperationException {
		String fqn = args.length > 0 ? args[0] : "<missing arg>";
		Applet a = (Applet) Class.forName(fqn).newInstance();
		AppletViewer v = new AppletViewer(a);
		SwingUtilities.invokeLater(() -> v.launch());
	}

	private Applet applet;
	
	public AppletViewer(Applet a) {
		applet = a;
	}
	
	private void launch() {
		applet.init();
		JPanel ctrl = new JPanel();		
		addButton("Start", e -> applet.start(), ctrl);
		addButton("Stop", e -> applet.stop(), ctrl);
		Container cp = getContentPane();
		cp.add(BorderLayout.CENTER, applet);
		cp.add(BorderLayout.SOUTH, ctrl);
		pack();
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	
		addWindowListener(new ShutdownHandler());
		setVisible(true);
	}
	
	private void addButton(String label, ActionListener l, Container parent) {
		JButton b = new JButton(label);
		b.addActionListener(l);
		parent.add(b);
	}
	
	private class ShutdownHandler extends WindowAdapter {
		@Override
		public void windowClosing(WindowEvent e) {
			applet.destroy();
			super.windowClosing(e);
		}
	}
}
Citera
2020-03-25, 18:45
  #7
Medlem
Citat:
Ursprungligen postat av grabb1948
Fungerar detta bättre med dagens Java:
https://github.com/vbohush/SortingAl...bohush/sorting

jag har bara Java i Raspberry Pi.

Nya frågor:
Hur gör man med package och javac?
Citera
2020-03-25, 20:56
  #8
Moderator
Protons avatar
Citat:
Ursprungligen postat av grabb1948
Nya frågor:
Hur gör man med package och javac?
Va?

javac är ju javakompilatorn, du använder den är ju det enkla svaret.

Vad menar du med package? Har du nåra externa jarfiler du behöver ha med som dependencies eller vad är det du menar egentligen?
Citera
2020-03-25, 23:15
  #9
Medlem
Citat:
Ursprungligen postat av Proton
Va?

javac är ju javakompilatorn, du använder den är ju det enkla svaret.

Vad menar du med package? Har du nåra externa jarfiler du behöver ha med som dependencies eller vad är det du menar egentligen?

Man kan kompilera 11 filer samtidigt. Men då är det ju meningslöst att de ligger i en package.
Tydligen krävs att man avaktiverar package med tex // framför.
Låter opraktiskt....
Citera
2020-03-26, 06:45
  #10
Moderator
Protons avatar
Citat:
Ursprungligen postat av grabb1948
Man kan kompilera 11 filer samtidigt. Men då är det ju meningslöst att de ligger i en package.
Tydligen krävs att man avaktiverar package med tex // framför.
Låter opraktiskt....
Förstår fortfarande inte vad du menar.

Varje import du har i ditt program importerar ju ett paket, är det de paketen du menar? Eller försöker du bygga en egen JAR-fil med något i?
Citera
2020-03-26, 07:15
  #11
Medlem
Citat:
Ursprungligen postat av Proton
Förstår fortfarande inte vad du menar.

Varje import du har i ditt program importerar ju ett paket, är det de paketen du menar? Eller försöker du bygga en egen JAR-fil med något i?

Ingen JAR här. Felinfo:

pi@raspberrypi:~/New_dec2019/SortingAlgorithmAnimations-master/src $ javac -Xlint ./net/bohush/sorting/*.java
./net/bohush/sorting/Main.java:9: warning: [deprecation] JApplet in javax.swing has been deprecated
public class Main extends JApplet {
^
1 warning
Citera
2020-03-26, 11:00
  #12
Moderator
Protons avatar
Citat:
Ursprungligen postat av grabb1948
Ingen JAR här. Felinfo:

pi@raspberrypi:~/New_dec2019/SortingAlgorithmAnimations-master/src $ javac -Xlint ./net/bohush/sorting/*.java
./net/bohush/sorting/Main.java:9: warning: [deprecation] JApplet in javax.swing has been deprecated
public class Main extends JApplet {
^
1 warning
Ja det är en varning från kompilatorn som säger att du använder ett deprecated API.

I ditt fall är det JApplet som är deprecated. Du kan annotera din klass att den ska skita i att varna för sådant genom att sätta suppresswarningspå den.

https://stackoverflow.com/questions/...arning-in-java
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback