DA7351 Programmering 1 Skapa och placera en komponent i en container Layoutmanagers Applet Händelser och lyssnare Föreläsning 15
DA7351 Programmering 1 Skapa en komponent 1.En komponentreferens ska deklareras och en komponent ska skapas. Detta gör du med fördel i början av klassen. public class ApplikationEx1 extends JFrame { private JLabel enText = new JLabel("Mitt namn är Svensson"); private JButton avslutaKnapp = new JButton("Avsluta"); private Font typsnitt = new Font("SansSerif",Font.BOLD,24); 2Med set-metoder kan man "designa" komponenten, dvs. ge den speciella värden, t.ex. Bakgrundsfärg avslutaKnapp.setBackground(Color.magenta); Textfärg enText.setForeground(Color.cyan); Font enText.setFont(typsnitt); Detta gör du oftast i konstruktorn eller i metoder som anropas från konstruktorn.
DA7351 Programmering 1 Placera en komponent i en Container Man placerar en komponent med hjälp av add -metoden. I en JFrame/JApplet ser det ut så här: Container c = getContentPane(); // En container för fönstet/appleten c.add(enText); // komponenten som enTExtn refererar till placeras i containern Om komponenten ska placeras på en JPanel så använder man panelens add- metod: add(button); // komponenten som button refererar till placeras på // ärvd panel panel.add(label); // komponenten som label refererar till placeras på // panelen panel Som regel anropas add-metoden i konstruktorn eller i metoder som anropas från konstruktorn. Add-metoden finns i ett antal varianter som du snart ska få ta del av. ApplikationEx1
DA7351 Programmering 1 LayoutManager
DA7351 Programmering 1 FlowLayout FlowLayoutEx.java
DA7351 Programmering 1 BorderLayout
DA7351 Programmering 1 BorderLayout BorderLayoutEx.java
DA7351 Programmering 1 GridLayout GridLayoutEx.java
DA7351 Programmering 1 Ingen LayoutManager IngenLayout.java
DA7351 Programmering 1 En layout LayoutEx.java
DA7351 Programmering 1 Applet
DA7351 Programmering 1 En applet AppletEx1
DA7351 Programmering 1 Farger2 – Något händer Farger2 Farger
DA7351 Programmering 1 Händelser - lyssnare För att reagera på händelser använder man lyssnare. Här följer exempel på några lyssnare och vilka händelser de kan reagera på: LyssnareHändelse MouseListener Musklick Musmarkör flyttad in på komponent Musmarkör flyttad från komponent Musknapp nedtryck på komponent Musknapp släppt på komponent MouseMotion- Musen flyttas över komponent Listener Musen dras över komponent ActionListener Klick på JButton + mycket mer Användaren agerar Händelse genereras Lyssnare reagerar på händelsen
DA7351 Programmering 1 Händelser och lyssnare När man använder sig av lyssnare så anger man det i raden med klassnamnet efter ordet implements. Om man i klassen Exempel vill använda sig av ActionListener och MouseListener så skriver man så här: class Exempel extends JFrame implements ActionListener, MouseListener { Sedan måste man skriva ett antal metoder som reagerar på olika Mouse- och Action-händelser. Oftast fyller man endast någon eller några av metoderna med kod. Resten får vara tomma. public void actionPeformed(ActionEvent e) { setTitel(”En ny titel”); } public void mouseclicked(MouseEvent e) {} public void mousePressed(MouseEvent e) { okKnapp.setLabel(”Not OK”); } public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {}
DA7351 Programmering 1 Händelser och lyssnare Implementerar man en lyssnare så måste man skriva ett antal metoder: MouseListener mouseClicked, mouseEntered, mouseExited, mousePressed, mouseReleased MouseMotionListener mouseDragged, mouseMoved ActionListener actionPerformed
DA7351 Programmering 1 Händelser och lyssnare Det sista man ska göra för att lyssnarmetoderna ska fungera, det är att koppla lyssnaren till de komponenter som man vill reagera på. Det gör man med metoden komponent.add…Listener(this); t.ex. colorButton.addActionListener(this); Med argumentet this talar man om att händelsemetoderna är implementerade i den aktuella klassen, dvs. i samma klass som komponentreferensen colorButton. Det innebär i det här fallet att metoden public void actionPerformed(ActionEvent e) { } ska finnas i klassen. ApplikationEx2
DA7351 Programmering 1 Bilder och ljud i applikation På förra laborationen hämtade du in en bild med hjälp av Toolkit-klassen. Det finns ett enklare sätt att hämta bilder, nämligen med hjälp av ett ImageIcon-objekt (i paketet javax.swing). ImageIcon-objektet har ett flertal konstruktorer varav några är väldigt användbara. I en applikation kan man hämta en bild så här:: ImageIcon im1 = new ImageIcon(”C:/bilder/rolig.jpg”); ImageIcon im2 = new ImageIcon(new URL(”file:C:/bilder/rolig.jpg”)); Bilden ska ha något av formaten gif, jpg eller png (sedan 1.3). Ljud hämtar man in i en applikation med klassmetoden newAudioClip i klassen Applet (ärvs till JApplet). Klassen AudioClip som representerar ljudfilen finns i paketet java.applet. AudioClip ljud = Applet.newAudioClip(new URL(”file:C:/bilder/rolig.jpg”)); Med metoderna play (spela ljudet en gång), stop (avsluta uppspelning) och loop (spela ljudet upprepat) kan styra användningen av ljudet. SlideShowApp