Gå til innhold

Hvordan fortsette på min JFrame?


Anbefalte innlegg

Hei,

 

Har nettop startet opp med java. Var inne på sun sine sider på Java toturials for å lære meg å bruke JFrame. Spørsmålet mitt da er hvordan jeg kan fortsette i programmet mitt?! Hvis jeg f.eks vil legge til en JButton som skal utføre en liten oppgave, hvordan skal jeg da skrve dette inn i min lille kodesnutt?

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class wcp {
 private static void GUI() {
       /* En fin rute */
       JFrame.setDefaultLookAndFeelDecorated(true);

       /* Lager vinduet */
       JFrame frame = new JFrame("WCP");
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       /* Legger til "Dette skal bli et bra program!" Label */
       JLabel label = new JLabel("Dette skal bli et bra program!");
       frame.getContentPane().add(label);

       /* Viser vinduet */
       frame.pack();
       frame.setVisible(true);
 }
 public static void main(String[] args) {
       javax.swing.SwingUtilities.invokeLater(new Runnable() {
           public void run() {
             GUI();
     }
    }
   );
 }
}

 

På forhånd takk! :thumbup:

Lenke til kommentar
Videoannonse
Annonse
Hei,

 

Har nettop startet opp med java. Var inne på sun sine sider på Java toturials for å lære meg å bruke JFrame. Spørsmålet mitt da er hvordan jeg kan fortsette i programmet mitt?! Hvis jeg f.eks vil legge til en JButton som skal utføre en liten oppgave, hvordan skal jeg da skrve dette inn i min lille kodesnutt?

 

På forhånd takk! :thumbup:

Jeg har vanligvis en litt annen struktur på mine Swing applikasjoner. Jeg har laget en liten Swing applikasjon, og lagt den inn i Devsiden Paste for å få fargelegging av koden (litt lettere å lese). URLen til pasten er: http://www.devsiden.info/index.jsp?side=pastebin&pasteid=5

 

Håper det hjelper llitt :)

 

Når du klikker på knappen sendes en ActionEvent til klassen som er registrert som ActionListener på knappen, i dette tilfelle samme klasse (this). Hvis du vil kan du skrive egne klasser som mottar ActionEvents og behandler dem.

 

.:BoeManE:.

Lenke til kommentar

den andre koden var mye bedre. Det er ikke nødvendig å ha med et runnable objekt i main metoden som du hadde først, er heller ikke noe poeng i å gjøre alt statisk.

 

Det jeg pleier å gjøre er å lage en klasse som extends JPanel. Så oppretter jeg ei JFrame i mainmetoden, og legger panel objektet mitt til på den

Lenke til kommentar
Takk for gode svar! Men hva vil det si å bruke "extends" og "implements"? Og hva er egentlig forskjell på public og private?

Når en metode, klasse eller variabel er public er den tilgjengelig utenfor klassen de er definert i, men private betyr at det kun er klassen de er definert i som kan se variablene/metodene.

 

at en klasse "extender" fra en annen betyr at den arver fra den. I dette tilfelle arver vi fra JFrame, slik at denne klassen (this) har alle egenskapene til en JFrame, pluss de vi definerer selv

 

implements betyr at den benytter seg av et interface, og må dermed inkludere visse metoder. Lurt å gjøre hvis man skal lage standard komponenter, f.eks.

 

korte svar, men håper det hjelper litt

Lenke til kommentar
Hei,

 

Har nettop startet opp med java. Var inne på sun sine sider på Java toturials for å lære meg å bruke JFrame. Spørsmålet mitt da er hvordan jeg kan fortsette i programmet mitt?!

Du bør/må bruke en layoutmanager. Les videre i tutorialen.

 

GUI (syns jeg) er noe av det vanskeligste innen Java.

Lenke til kommentar

Extends:

Dette bruker du når du vil ha et objekt som er subklasse av et annet objekt, men samtidig vil ha mulighet til å bruke superobjektets (det objektet du arver fra) metoder og variabler. "super"objektet kan settes til avstract dersom du vil nekte brukeren å opprette objekt av den typen. På denne måten kan du som i dette tilfelle extende JFrame. Deretter kan du velge å bruke alle metodene som allerede finnes i standard JFrame, eller du kan gjøre det som kalles å "overlagre" metodene. Da lager du en metode med samme navn som finnes i superklassen, men med annen funksjonalitet. Hvis du bare vil legge til litt ekstra funksjonalitet i en metode kan du inne i metoden kalle på super(); dette gjør at den orginale metoden også blir kjørt. Typisk bruksområde er om du lager en klasse som heter Person, og oppretter personer. Da kan du også opprette Student, som har alle egenskapene til en person, men som også har et par ekstra variabler.

 

Implements:

Dette er å implementere et grensesnitt, eller interface. Et slikt grensesnitt består kun av metodenavn, og du tvinges til å opprette de metodene, med identiske parametre og retur typer, mens du står fritt til å skrive innholdet i metodene. Forskjellen fra den forrige er da at du ikke har et felle sett med metoder, men alt må skrives i klassen hvor det brukes. Dette brukes typisk hvis du lager et spill og vil ha en datastyrt spiller og en menneskestyrt. Da lager du et grensesnitt kalt Spiller, og programmet trenger ikke å vite om spilleren styres av deg eller datan, siden metodene har samme navn og gir samme retur, forskjellen ligger i hvordan de forskjellige klassene har implementert metodene.

 

Felles:

Med begge kan du legge til så mye du vil av egen funksjonalitet som ekstra metoder og variabler i den klassen som arver eller implementerer. Det er heller ikke noe poeng i å lage hverken superklasse eller grensesnitt om du kun har en klasse som skal arve/implementere.

 

 

 

Så til han som skreiv om LayoutManager:

Du bruker en LayoutManager uansett, enten du setter den selv eller ikke. JFrame har som default FlowLayout, noe som ofte kan være greit, siden du like vel vil legge på et JPanel. Men panelet har også FlowLayout som default, og dette er ikke like kjekt. Da burker du metoden setLayout() eller du kan sende den som et parameter i konstruktor.

 

Dette ble visst ganske lang, men jeg synes jeg lærer en del av å tenke igjennom ting som jeg egentlig bare gjør, så det er bare å spørre om du lurer på noe mer :)

Endret av mikaelandre
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...