...
Wat zijn de voor en nadelen van Swing?
Hoe maak je een JavaFX applicatie?
Hoe maak je een Swing appliatie?
Wat is het verschil tussen JavaFX en Swing?
...
Swing blijft een krachtig frontend-framework voor het ontwikkelen van desktopapplicaties in Java. Met zijn platformonafhankelijkheid, uitgebreide GUI-componenten, modulariteit en MVC-architectuur biedt Swing ontwikkelaars een solide basis voor het bouwen van moderne en gebruiksvriendelijke gebruikersinterfaces. Hoewel het enkele nadelen heeft blijft Swing een populaire keuze voor Java-ontwikkelaars.
Hoe maak je een JavaFX applicatie?
Text goes here
Hoe maak je een Swing applicatie?
Een Swing applicatie bestaat uit frames. Een Frame is wat door je systeem wordt gezien als een "window". Binnen een complexe applcatie bestaan de frames ook uit een of meerdere Panel(s). Een panel is een soort class dat UI elementen kan bevatten. Vanwege hoe de taal is opgezet kan je zelfs een frontend aanmaken zonder apparte classes aan te maken, zoals te zien in de code snippet hieronder:
public static void main(String[] args){
Frame frame = new Frame("simple app");
Panel panel = new Panel();
Label label = new Label("This is a label");
TextField textField = new TextField("enter text here");
Button button = new Button("Submit");
panel.add(label);
panel.add(textField);
panel.add(button);
frame.add(panel);
frame.pack();
frame.validate();
frame.setVisible(true);
}
(Code snippet 7.1)
In dit stuk code wordt een frame, een panel en UI elementen aangemaakt. De UI elementen worden toegevoegd aan de panel, en de panel wordt toegevoegd aan het frame. De laatste regels zijn boilerplate code om het frame te laten zien. Dit ziet er vervolgens zo uit:
(Afbeelding 7.1)
Dit ziet er echter niet echt goed uit, Swing heeft echter de mogelijkheid om UI elementen in te delen met XML. Dit kan met de hand, of met een IDE, dit is bij dit onderzoek met IntelJ gedaan.
Met de editor van IntelJ kunnen dezelfde UI elementen in de voorbeeldApplicatie geplaatst worden. Dit wordt hier gedaan in een class die Jframe extend. De class vertegenwoordigd dus een window. Dit is de indeling van UI elementen en code nu:
(Afbeelding 7.2)
Het resultaat ziet er vervolgens zo uit:
(Afbeelding 7.3)
Swing wordt echter natuurlijk voornamelijk gebruikt om interactieve applicaties te ontwikkelen, dit kan gedaan worden met listeners. Listeners kunnen aan een aantal UI elementen toegevoegd worden, en triggeren een stuk Java-code als ze getriggert worden. Triggers kunnen bijvoorbeeld het klikken op een knop, het aanslaan van een toets op het toetsenbord of het hovereren over een UI element met een cursor zijn. Een action listener voor een klik actie op de submitknop in de vorige app ziet er bijvoorbeeld zo uit:
submitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
//add code here
}
});
(Code snippet 7.2)
Met setters kunnen ook attributen van UI elementen aangepast worden, bijvoorbeeld de tekst in een tekstvak, de tekst op een label, of een knop "enabled" is, etc.
Code tussen de haken waar de comment staat wordt nu uitgevoerd als er op de knop gedrukt wordt. Met deze kennis is de volgende applicatie gemaakt:
(Afbeelding 7.4)
In deze applicatie kan er op de knoppen gedrukt worden om de tekst in het label te veranderen. De tekst wordt "Hello Computer!" of "Hello World!" als er gedrukt wordt op de "Computer!" of "World!" knop. Als er op de "Me!" knop gedrukt wordt wordt de ingevoerde tekst uit het tekstvak gehaald en achter "Hello" in het label geplakt. Als er "Jane" is ingevoerd wordt de tekst in het label bijvoorbeeld "Hello Jane!":
(Afbeelding 7.5)
Dit is gedaan door de getters en setters van het tekstveld en het label te gebruiken:
meButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
label.setText("Hello "+ naamField.getText()+"!");
}
});
(Code snippet 7.3)
Op deze manier kunnen er interactieve Swing applicaties gemaakt worden. Alle code van de gemaakte applicaties zijn te vinden op
Wat is het verschil tussen JavaFX en Swing?
...