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

Voorbeelduitvoer

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

Voorbeeld van het bekijken van parameterinformatie van de methode in IntelliJ IDEA

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

Voorbeelduitvoer

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 .

Automatisch aanvullen in IntelliJ IDEA

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:



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow