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

Lektionsmaterial till kursmomentet 2I1049/IV1004.

*

En applikation som visar slumpvis framplockade objekt av den * egendefinierade klassen Citat.

* * @author Peter Mozelius * Rapportera hittade fel till: * Peter Mozelius * @version 1.1, 2008-01-18 */ public class Lektion3b extends JFrame implements ActionListener{ public static final int ANTAL = 3; private JPanel nordPanel, mittPanel, sydPanel; private JLabel infoLabel, personLabel, ämnesLabel; private JTextField personText, ämnesText; private JTextArea citatText; private Font citatFont; private JButton köKnapp; private Citat citat; private Citat[] lager; /** * Defaultkonstruktor för Lektion3b. Först skapas GUI, och sedan skapas * citat. */ public Lektion3b() { fixaGUI(); fixaCitat(); } /** * Här skapas gränssnittet (GUI) med alla paneler och knappar. * En s.k. GridLayout används här för layout av de grafiska komponenterna. */ public void fixaGUI() { setSize(400, 200); nordPanel = new JPanel(); nordPanel.setLayout(new GridLayout(1,4)); personLabel = new JLabel(" Person: ", JLabel.CENTER); personLabel.setOpaque(true); personLabel.setForeground(Color.black); personText = new JTextField(" Albert Einstein"); personText.setEditable(false); personText.setBackground(Color.yellow); ämnesLabel = new JLabel(" Ämne: ", JLabel.CENTER); ämnesLabel.setOpaque(true); ämnesLabel.setForeground(Color.black); ämnesText = new JTextField(" Teknik"); ämnesText.setBackground(Color.yellow); ämnesText.setEditable(false); nordPanel.add(personLabel); nordPanel.add(personText); nordPanel.add(ämnesLabel); nordPanel.add(ämnesText); add("North", nordPanel); citatFont = new Font("Verdana", Font.ITALIC, 14); citatText = new JTextArea("\n Den trådlösa telegrafen är inte svår att förstå. Den vanliga telegrafen är som en lång katt. Man drar i svansen i New York och så jamar den i Los Angeles. Trådlös telegrafi är samma sak fast utan katt."); citatText.setFont(citatFont); citatText.setLineWrap(true); citatText.setWrapStyleWord(true); add("Center", citatText); //en köstyrande knapp i söder sydPanel = new JPanel(); infoLabel = new JLabel(" 2I1049 CITATOMAT ", JLabel.CENTER); infoLabel.setOpaque(true); infoLabel.setForeground(Color.black); köKnapp = new JButton("Visa upp ett nytt citat"); sydPanel.add(infoLabel); sydPanel.add(köKnapp); köKnapp.addActionListener(this); add("South", sydPanel); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE);// Gör det möjligt att stänga }//fixaGUI /** Skapa ett antal citatobjekt och lägg in i ett fält */ public void fixaCitat() { lager = new Citat[ANTAL]; lager[0] = new Citat(" Alida, 7 år", " Datorer", "\n Inuti datorn finns det massor med sladdar. Sladdarna blir till spel när det går el eller vad det heter igenom dem."); lager[1] = new Citat(" Jacques, 7 år", " E-post", "\n Det finns någon sorts elrum eller vad man ska säga som skickar meddelanden till ett annat elrum. Man kan säga att det är som en hiss fast den går åt sidan."); lager[2] = new Citat(" Beata, 5 år", " Datorvirus", "\n Virus är som en sjukdom när man får in en massa smuts i datorn och då måste man tvätta den."); }//fixaCitat /** * Metod actionPerformed MÅSTE implementeras för att interface * ActionListener är implementerat i klassen. Metoden anropas alltid * efter att användaren har tryckt på en knapp. Efter varje knapptryckning * hämtas ett slumpvis utvalt citat * @param e object ActionEvent */ public void actionPerformed(ActionEvent e) { if(e.getSource() == köKnapp) { int index = (int) (Math.random() * ANTAL); citat = lager[index]; personText.setText(citat.visaPerson()); ämnesText.setText(citat.visaÄmne()); citatText.setText(citat.visaCitat()); } }// actionPerformed /** * main anropar Lektion3b. Innehållet i metoden är vanligtvis mycket liten. * @param args en array med strängar är standard argument för main */ public static void main(String[] args) { new Lektion3b(); } }//Lektion2b /** *

Lektionsmaterial till kursmomentet 2I1049.

*

En egendefinierad klass Citat.

* * @author Peter Mozelius * Rapportera hittade fel till: * Peter Mozelius * @version 1.1, 2008-01-18 */ class Citat { private String person; private String ämne; private String citat; /** * Konstruktor för klassen. * @param p person * @param ä ämne * @param c citat */ public Citat(String p, String ä, String c) { person = p; ämne = ä; citat = c; } /** * Returnerar strängen person * @return Returnerar person */ public String visaPerson() { return person; } /** * Returnerar strängen ämne * @return Returnerar ämne */ public String visaÄmne() { return ämne; } /** * Returnerar strängen citat * @return Returnerar citat */ public String visaCitat() { return citat; } }