swing
Swing gebruiken voor grafische gebruikersinterfaces
Zoeken…
Opmerkingen
De toepassing afsluiten bij het sluiten van het venster
Het is gemakkelijk om te vergeten de toepassing te sluiten wanneer het venster wordt gesloten. Vergeet niet om de volgende regel toe te voegen.
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
Een leeg venster maken (JFrame)
Het JFrame maken
Een venster maken is eenvoudig. U hoeft alleen maar een JFrame
te maken.
JFrame frame = new JFrame();
Het venster een titel geven
Misschien wilt u uw venster een titel geven. U kunt dit doen door een string door te geven bij het maken van het JFrame
of door frame.setTitle(String title)
aan te roepen.
JFrame frame = new JFrame("Super Awesome Window Title!");
//OR
frame.setTitle("Super Awesome Window Title!");
De venstergrootte instellen
Het venster is zo klein mogelijk wanneer het is gemaakt. Om het groter te maken, kunt u de grootte expliciet instellen:
frame.setSize(512, 256);
Of u kunt de framegrootte zelf instellen op basis van de grootte van de inhoud met de methode pack()
.
frame.pack();
De setSize()
en pack()
sluiten elkaar uit, dus gebruik de een of de ander.
Wat te doen bij Window Close
Merk op dat de toepassing niet wordt afgesloten wanneer het venster is gesloten. U kunt de toepassing afsluiten nadat het venster is gesloten door het JFrame
te vertellen dat te doen.
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Als alternatief kunt u het venster laten weten dat het iets anders moet doen wanneer het is gesloten.
WindowConstants.DISPOSE_ON_CLOSE //Get rid of the window
WindowConstants.EXIT_ON_CLOSE //Quit the application
WindowConstants.DO_NOTHING_ON_CLOSE //Don't even close the window
WindowConstants.HIDE_ON_CLOSE //Hides the window - This is the default action
Een inhoudsvenster maken
Een optionele stap is om een inhoudsvenster voor uw venster te maken. Dit is niet nodig, maar als u dit wilt doen, maakt u een JPanel
en roept u frame.setContentPane(Component component)
.
JPanel pane = new JPanel();
frame.setContentPane(pane);
Het venster tonen
Nadat u het hebt gemaakt, wilt u uw componenten maken en vervolgens het venster tonen. Het venster weergeven is zo gedaan.
frame.setVisible(true);
Voorbeeld
Voor degenen onder u die graag kopiëren en plakken, hier is een voorbeeldcode.
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane
frame.setVisible(true); //Show the window
Componenten toevoegen
Een component is een soort gebruikersinterface-element, zoals een knop of een tekstveld.
Een component maken
Het maken van componenten is vrijwel identiek aan het maken van een venster. In plaats van een JFrame
, maakt u die component echter wel. Als u bijvoorbeeld een JButton
wilt maken, doet u het volgende.
JButton button = new JButton();
Aan veel componenten kunnen parameters worden doorgegeven wanneer ze worden gemaakt. Een knop kan bijvoorbeeld wat tekst krijgen om weer te geven.
JButton button = new JButton("Super Amazing Button!");
Als u geen knop wilt maken, vindt u een lijst met veelvoorkomende componenten in een ander voorbeeld op deze pagina.
De parameters die hieraan kunnen worden doorgegeven, variëren van component tot component. Een goede manier om te controleren wat ze kunnen accepteren, is door te kijken naar de parameters in uw IDE (als u er een gebruikt). De standaard sneltoetsen worden hieronder vermeld.
- IntelliJ IDEA - Windows / Linux:
CTRL + P
- IntelliJ IDEA - OS X / macOS:
CMD + P
- Eclipse:
CTRL + SHIFT + Space
- NetBeans:
CTRL + P
De component wordt weergegeven
Nadat een component is gemaakt, stelt u meestal de parameters in. Daarna moet u het ergens plaatsen, zoals op uw JFrame
, of in uw inhoudsvenster als u er een hebt gemaakt.
frame.add(button); //Add to your JFrame
//OR
pane.add(button); //Add to your content pane
//OR
myComponent.add(button); //Add to whatever
Voorbeeld
Hier is een voorbeeld van het maken van een venster, het instellen van een inhoudsvenster en het toevoegen van een knop eraan.
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane
JButton button = new JButton("Super Amazing Button!"); //Create the button
pane.add(button); //Add the button to the content pane
frame.setVisible(true); //Show the window
Parameters instellen voor componenten
Componenten hebben verschillende parameters die hiervoor kunnen worden ingesteld. Ze variëren van component tot component, dus een goede manier om te zien welke parameters kunnen worden ingesteld voor componenten is om te beginnen met het typen van componentName.set
, en laat automatisch aanvullen van uw IDE (Als u een IDE te gebruiken) suggereren methoden. De standaardsnelkoppeling in veel IDE's, als deze niet automatisch wordt weergegeven, is CTRL + Space
.
Gemeenschappelijke parameters die worden gedeeld tussen alle componenten
Beschrijving | Methode |
---|---|
Stelt de kleinste grootte in die de component kan zijn (alleen als de lay-outmanager de eigenschap minimumSize respecteert) | setMinimumSize(Dimension minimumSize) |
Stelt de grootste grootte in die de component kan zijn (alleen als de lay-outmanager de eigenschap maximumSize respecteert) | setMaximumSize(Dimension maximumSize) |
Stelt de afgeleide grootte van de component in (alleen als de lay-outmanager de eigenschap preferredSize respecteert) | setPreferredSize(Dimension preferredSize) |
Toont of verbergt het onderdeel | setVisible(boolean aFlag) |
Stelt in of de component moet reageren op gebruikersinvoer | setEnabled(boolean enabled) |
Stelt het lettertype van tekst in | setFont(Font font) |
Stelt de tekst van de knopinfo in | setToolTipText(String text) |
Stelt de achtergrondkleur van de component in | setBackground(Color bg) |
Stelt de voorgrondkleur (letterkleur) van de component in | setForeground(Color bg) |
Gemeenschappelijke parameters in andere componenten
Gemeenschappelijke componenten | Beschrijving | Methode |
---|---|---|
JLabel , JButton , JCheckBox , JRadioButton , JToggleButton , JMenu , JMenuItem , JTextArea , JTextField | Stelt de weergegeven tekst in | setText(String text) |
JProgressBar , JScrollBar , JSlider , JSpinner | Stel een numerieke waarde in tussen de min- en max-waarden van de component | setValue(int n) |
JProgressBar , JScrollBar , JSlider , JSpinner | Stel de kleinst mogelijke waarde in die de eigenschap value kan zijn | setMinimum(int n) |
JProgressBar , JScrollBar , JSlider , JSpinner | Stel de grootst mogelijke waarde in die de value eigenschap kan zijn | setMaxmimum(int n) |
JCheckBox , JToggleBox | Stel in of de waarde waar of onwaar is (bijvoorbeeld: moet een selectievakje worden aangevinkt?) | setSelected(boolean b) |
Gemeenschappelijke componenten
Beschrijving | Klasse |
---|---|
Knop | JButton |
checkbox | JCheckBox |
Vervolgkeuzelijst / keuzelijst | JComboBox |
Etiket | JLabel |
Lijst | JList |
Menubalk | JMenuBar |
Menu in een menubalk | JMenu |
Item in een menu | JMenuItem |
Paneel | JPanel |
Voortgangsbalk | JProgressBar |
Radio knop | JRadioButton |
Schuifbalk | JScrollBar |
schuif | JSlider |
Spinner / nummerkiezer | JSpinner |
Tafel | JTable |
Boom | JTree |
Tekstgebied / Multiline tekstveld | JTextArea |
Tekstveld | JTextField |
Werkbalk | JToolBar |
Interactieve gebruikersinterfaces maken
Met een knop daar is alles goed en wel, maar wat heeft het voor zin om erop te klikken niets doet? ActionListener
's worden gebruikt om uw knop of ander onderdeel te vertellen iets te doen wanneer deze is geactiveerd.
Het toevoegen van ActionListener
s gebeurt als zodanig.
buttonA.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Code goes here...
System.out.println("You clicked the button!");
}
});
Of, als u Java 8 of hoger gebruikt ...
buttonA.addActionListener(e -> {
//Code
System.out.println("You clicked the button!");
});
Voorbeeld (Java 8 en hoger)
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create a pane to house all content
frame.setContentPane(pane);
JButton button = new JButton("Click me - I know you want to.");
button.addActionListener(e -> {
//Code goes here
System.out.println("You clicked me! Ouch.");
});
pane.add(buttonA);
frame.setVisible(true); //Show the window
Indeling van componenten organiseren
Componenten achter elkaar toevoegen resulteert in een gebruikersinterface die moeilijk te gebruiken is, omdat de componenten allemaal ergens zijn . De componenten zijn van boven naar beneden geordend, elk component in een afzonderlijke "rij".
Om dit te verhelpen en u als ontwikkelaar de mogelijkheid te bieden om componenten gemakkelijk op te zetten, heeft Swing LayoutManager
s.
Deze LayoutManagers worden uitgebreid behandeld in Inleiding tot Layout Managers en de afzonderlijke onderwerpen van Layout Manager: