Wkunl

Hoe maak je een schommel GUI in Java te creëren

Ten eerste, moet je de basis Java concepten van object en de interface kennen. We nemen aan dat u dit al weet.

In dit artikel wordt uitgelegd hoe u eenvoudige toepassing die wordt weergegeven in de figuur rechts, waardoor de broncode ook te creëren.

Om knoppen plaatsen, tekstlabels en andere componenten op het programmavenster, moet u begrijpen over JPanel. Het is een soort container voor onderdelen, waarvan het rechthoekig stuk op het scherm inneemt en toont de componenten gerangschikt in een aantal eenvoudige manier. Hoe precies de componenten zijn aangebracht is afhankelijk van welke layout u hebt ingesteld om dat paneel. Voor de handmatige programmering zult u waarschijnlijk nodig hebt om ten minste de weet BorderLayout die vier componenten aan de zijkanten en een grote component in het midden plaatst, dan is het FlowLayout die meestal regelt ze naast elkaar in de horizontale rij en tenslotte de GridLayout welke componenten in arrangeert willekeurige n * m tafel. Er zijn meer van hen, maar anderen lijken te ingewikkeld voor beginners. Het belangrijkste idee hier is dat een "onderdeel" niet alleen een knop of selectievakje kan zijn - het kan ook een andere JPanel zijn U kunt een complexe gebruikersinterface krijgen door gewoon panelen binnen een andere zetten en het kiezen van de lay-outs voor hen..

Zodra u een instantie van JPanel, bel de. SetLayout methode om de lay-out en vervolgens de. Methode toe te voegen aan de onderdelen toe te voegen stellen. Voor de BorderLayout, moet u de locatie als een tweede parameter geven. Bijvoorbeeld, bel myPanel.add (myButton, BorderLayout.North) om uw button te plaatsen aan de bovenkant.

Het hoogste niveau container, die op het scherm vertegenwoordigen java applicatie verschijnt, is niet een JPanel maar JFrame. Call myJFrame.getContentPane (). Voegen (myJPanel, BorderLayout.Center) om uw belangrijkste panel toe te voegen aan de instantie van JFrame.

Om uw aanvraag om meer te doen dan alleen maar verschijnen moet je ook de interface ActionListener begrijpen. Iedere niet abstract ActionListener heeft een methode actionPerformed, die automatisch wordt opgeroepen wanneer de gebruiker een "actie" de component waarop het is geregistreerd (de actie met knop uiteraard drukken) maakt. Tot actie listener voor de knop of een andere component te registreren, roept u de methode . addActionListener..

Stappen

Hoe maak je een schommel GUI in Java te creëren. Plan de algemene lay-out van uw eerste aanvraag.
Hoe maak je een schommel GUI in Java te creëren. Plan de algemene lay-out van uw eerste aanvraag.

Waardoor de kozijnbuitenmaten

  1. 1
    Maak een klasse die de JFrame klasse breidt. Deze klasse zal al uw GUI-componenten te houden, zoals knoppen en tekstvelden.
  2. 2
    Plan de algemene lay-out van uw eerste aanvraag. Een goed begin zou een centrale paneel met BorderLayout met een ander scherm aan de onderkant (BorderLayout.South) zijn. Deze tweede paneel kan de FlowLayout te hebben en een aantal knoppen, selectievakjes en andere soortgelijke controles bevatten. Plaats tenslotte de grote JTextArea in het midden van de centrale component. U zult in staat zijn om haar getText () en setText () methodes gebruiken om bepaalde tekst-gebaseerde interactie hebben met de gebruiker.
  3. 3
    Schrijf constructor aan je klas. Deze constructor moeten alle panelen en componenten u van plan bent te maken, leg ze goed in elkaar en voeg het laatste paneel van de 'houdt alles "om je frame (myFrame.getContentPane (). Add (myLargePanel, BorderLayout.Center).
  4. 4
    Schrijf de belangrijkste methode die ingangspunt van het programma zal zijn. In deze methode, een instantie van je frame, zet de oorspronkelijke grootte en de locatie (gebruik. SetSize (x, y) en. SetLocation (breedte, hoogte)) en maken het te verschijnen op het scherm door te bellen. SetVisible (true).

Programmeren van reacties op de acties van de gebruiker

  1. 1
    Maak je frame implementeren van de interface ActionListener. Hierdoor kan uw klas te luisteren naar activiteiten van onderdelen '.
  2. 2
    Voor elke knop, selectievakje of andere controle die u hebt gemaakt, roepen haar methode. AddActionListener, langs je frame (deze) als parameter.
  3. 3
    Abstracte methode override ActionListener's, actionPerformed (ActionEvent event). In deze methode, moet je als statements controleren waar komt de actie evenement vandaan. Dit als verklaring moet een aandoening die iets als "if (event.getSource () == button1)" zegt. Dit controleert waar de gebeurtenis vandaan komen en of het kwam van uw button. Binnen in de if-statement, doen wat gedaan moet worden als je de knop indrukt nodig.
  4. 4
    JTextArea heeft een methode. SetText ("myText"), die goed is als de manier om een aantal zichtbare respons op uw actie programmeren lijkt.

Tips

  • Het is veel moeilijker om de MouseListener interface en gebruik implementeren. AddMouseListener te registreren om iedere component.
  • Als u wilt uw eigen grafische objecten (zoals schaakbord) tekenen, lezen over de Canvas -component. Het kan in uw aanvraag worden geplaatst als alle andere, maar je moet methode te schrijven. Verf die volledig verantwoordelijk is voor de verwezenlijking daarvan.
  • Als u nodig hebt om wat input string vragen aan de gebruiker, bel dan de statische methode J OptionPane.showInputDialog (deze, "Mijn boodschap"). De eerste parameter moet uw aanvraag frame of sommige paneel (het invoerveld verschijnt in het centrum van de ouder). De methode geeft de waarde die gebruiker in het dialoogvenster.
  • In veel praktische toepassingen van de meest nuttige Swing component is JTable. Nadat je meester de basis, direct doorgaan naar het.
  • Het is mogelijk alle componenten in een deelvenster met GridBagLayout zetten, maar deze klasse is moeilijker te beheersen.

Waarschuwingen

  • Sommige ontwikkelomgevingen bieden de mogelijkheid om de Swing GUI in een "user friendly" manier samen te stellen. Maar ze vaak niet in staat een paneel met geavanceerde functies correct beëindigd. Dergelijke functies zijn onder bomen, tabellen, lijsten en keuzelijsten dat ze de inhoud te wijzigen terwijl het programma draait, ook onderdelen met aangepaste datamodellen en ga zo maar door. De code, gecomponeerd in een "user friendly" manier kan een echte nachtmerrie worden als u later handmatig te beëindigen. Dus niet vasthouden aan een "gebruiksvriendelijke GUI ontwerper" te veel als het zal uw programmering macht te beperken tot haar beperkte mogelijkheden.
  • Swing is een enkele thread toepassing. Als uw actie handling kost te veel rekentijd, zal het 'bevriezen' totdat je. ActionPerformed methode retourneert. Leren en te gebruiken java multithreading de Swing "levend" te houden terwijl uw tijdrovend proces wordt uitgevoerd.
  • De meeste van de methodes van de Swing componenten kunnen alleen veilig worden aangeroepen vanuit de gebeurtenis dispatching draad (degene die belt. ActionPerformed en andere soortgelijke listenermethoden). Als u nodig hebt om ze te bellen vanaf een andere thread (bijvoorbeeld om de voortgangsbalk te actualiseren of te tonen resultaten van een aantal langlopende proces), lees over de SwingUtils.invokeLater.

Broncode

{{Codebox |

 * A very simple java swing application. * Een zeer eenvoudige Java swing applicatie. * Contains button and checkbox. * Bevat knop en checkbox. Responds * to manipulations with these controls by * changing text in the main text area. Reageert * voor manipulaties met deze controles door * het veranderen van tekst in de hoofdtekst. * * @author audriusa */ public class Google extends JFrame implements ActionListener { /** * The button. ** @ Author audriusa * / public class Google breidt JFrame implementeert ActionListener {/ *** De knop. */ JButton myButton = new JButton ( "Button" ) ; /** * The the checkbox. * / JButton myButton = new JButton ("Button"); / *** De het selectievakje. */ JCheckBox myCheckBox = new JCheckBox ( "Check" ) ; /** * The text area. * / JCheckBox myCheckBox = new JCheckBox ("Check"); / *** De tekst gebied. */ JTextArea myText = new JTextArea ( "My text" ) ; /** * The bottom panel which holds button. * / JTextArea myText = new JTextArea ("Mijn tekst"); / *** Het onderste paneel welke knop houdt. */ JPanel bottomPanel = new JPanel ( ) ; /** * The top level panel which holds all. * / JPanel bottomPanel = new JPanel (); / *** Het hoogste niveau paneel dat alle bezit. */ JPanel holdAll = new JPanel ( ) ; /** * The constructor. * / JPanel foudraal = new JPanel (); / *** De constructeur. */ public Google ( ) { bottomPanel. setLayout ( new FlowLayout ( ) ) ; bottomPanel. add ( myCheckBox ) ; bottomPanel. add ( myButton ) ; holdAll. setLayout ( new BorderLayout ( ) ) ; holdAll. add ( bottomPanel, BorderLayout. SOUTH ) ; holdAll. add ( myText, BorderLayout. CENTER ) ; getContentPane ( ). add ( holdAll, BorderLayout. CENTER ) ; myButton. addActionListener ( this ) ; myCheckBox. addActionListener ( this ) ; setDefaultCloseOperation ( DISPOSE_ON_CLOSE ) ; } /** * The program * @param args the program start up parameters, not used. * / Public Google () {bottomPanel setLayout (nieuw FlowLayout ());.. BottomPanel toevoegen (myCheckBox);. BottomPanel toevoegen (myButton);. Foudraal setLayout (nieuw BorderLayout ());. Foudraal voegen (bottomPanel, BorderLayout ZUIDEN. );. foudraal voegen (myText, BorderLayout CENTER);.. getContentPane () toe te voegen (Holdall, BorderLayout CENTER);.. myButton addActionListener (this);. myCheckBox addActionListener (this); setDefaultCloseOperation (DISPOSE_ON_CLOSE);} / *** Het programma * @ param args het programma opstart parameters, niet gebruikt. * / Public static void main (String [] args) {Google MyApplication = new Google (); / / Geef aan waar het zal verschijnen op het scherm:. MyApplication setLocation (10, 10); MyApplication setSize (300, 300);. / / Toon het MyApplication setVisible (true);!.} / *** Elk non abstracte klasse die de ActionListener * implementeert moet deze methode hebben. ** @ Param e de actie evenement. * / Public void actionPerformed (ActionEvent e) {if (e. getSource () == myButton) myText setText ("Een druk op de knop");. Else if (e. getSource () == myCheckBox) myText setText ("The. checkbox staat veranderd in "+ myCheckBox isSelected ()); anders myText setText (.." E... ");}}}} [[pt: Criar uma Interface GUI Com Swing geen Java]]?