import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JScrollPane; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JTextArea; import javax.swing.JFrame; import javax.swing.border.EtchedBorder; import java.awt.Container; import java.awt.GridLayout; import javax.swing.BoxLayout; import javax.swing.Box; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; /************************************************************* * Hjälpklass för ITK:P2 UppgiftB * Klass med ett grafiskt gränsnitt för att lista djur enligt * olika sorteringsordningar, samt lägga till, ta bort och * utföra olika uppgifter på Djurparkens djur. * @author Per Åberg (f d djurparksprogrammerare) * @version 1.0 ************************************************************/ public class UppgiftB extends JFrame implements ActionListener { private JTextField namnruta, artruta, alderruta; private JTextArea textyta; private JMenuItem avsluta, listaNamn, listaArt, listaAlder; private JMenuItem nyttDjur, taBortDjur, avmaska, nyAlder, info; /** * Konstruktorn gör inget annat än anropar * en metod för att rita gränssnittet. */ public UppgiftB() { buildGui(); } /** * Ritar upp gränssnittet genom att anropa * metoderna skapaMeny och skapaArbetsyta. */ public void buildGui() { Container c = getContentPane(); // behövs ej längre men ger bakåtkompabilitet JMenuBar menyRibba = skapaMeny(); setJMenuBar(menyRibba); JPanel arbetsyta = skapaArbetsyta(); c.add(arbetsyta); setTitle("Djurparken"); setDefaultCloseOperation (EXIT_ON_CLOSE); pack(); setVisible(true); } /** * Skapar menyraden med undermenyerna. * @return ett färdigkonfigurerat JMenuBar-objekt. */ public JMenuBar skapaMeny() { JMenuBar mb = new JMenuBar(); JMenu arkivMeny = new JMenu("Arkiv"); mb.add(arkivMeny); avsluta = new JMenuItem("Avsluta"); arkivMeny.add(avsluta); JMenu visaMeny = new JMenu("Visa"); mb.add(visaMeny); listaNamn = new JMenuItem("Sortera efter namn"); listaArt = new JMenuItem("Sortera efter art"); listaAlder = new JMenuItem("Sortera efter ålder"); visaMeny.add(listaNamn); visaMeny.add(listaArt); visaMeny.add(listaAlder); JMenu verktygsMeny = new JMenu("Verktyg"); mb.add(verktygsMeny); nyttDjur = new JMenuItem("Lägg till djur"); taBortDjur = new JMenuItem("Ta bort djur"); nyAlder = new JMenuItem("Ändra ålder"); avmaska = new JMenuItem("Avmaska djur"); verktygsMeny.add(nyttDjur); verktygsMeny.add(taBortDjur); verktygsMeny.add(nyAlder); verktygsMeny.add(avmaska); JMenu infoMeny = new JMenu("Hjälp"); mb.add(infoMeny); info = new JMenuItem("Information"); infoMeny.add(info); mb.setBorder(new EtchedBorder()); avsluta.addActionListener(this); listaNamn.addActionListener(this); listaArt.addActionListener(this); listaAlder.addActionListener(this); nyttDjur.addActionListener(this); taBortDjur.addActionListener(this); avmaska.addActionListener(this); nyAlder.addActionListener(this); info.addActionListener(this); return mb; } /** * Skapar textfälten och textarean. * @return ett JPanel-objekt med komponenterna utplacerade. */ public JPanel skapaArbetsyta() { JPanel jp = new JPanel(); jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS)); JLabel infoskylt = new JLabel("ZOO ADMINISTRATOR"); infoskylt.setForeground(Color.blue); infoskylt.setHorizontalAlignment(JLabel.CENTER); infoskylt.setFont(new Font("Arial", Font.BOLD, 30)); jp.add(infoskylt); JPanel underpanel = new JPanel(); underpanel.setLayout(new BoxLayout(underpanel, BoxLayout.X_AXIS)); JPanel vansterpanel = new JPanel(new GridLayout(2,1)); JPanel inmatningsyta = new JPanel(new GridLayout(6,1)); namnruta = new JTextField(); artruta = new JTextField(); alderruta = new JTextField(); namnruta.setBorder(new EtchedBorder()); artruta.setBorder(new EtchedBorder()); alderruta.setBorder(new EtchedBorder()); JLabel namnskylt = new JLabel("Namn"); JLabel artskylt = new JLabel("Art"); JLabel alderskylt = new JLabel("Ålder"); namnskylt.setHorizontalAlignment(JLabel.CENTER); namnskylt.setBorder(new EtchedBorder()); artskylt.setHorizontalAlignment(JLabel.CENTER); artskylt.setBorder(new EtchedBorder()); alderskylt.setHorizontalAlignment(JLabel.CENTER); alderskylt.setBorder(new EtchedBorder()); inmatningsyta.add(namnskylt); inmatningsyta.add(namnruta); inmatningsyta.add(artskylt); inmatningsyta.add(artruta); inmatningsyta.add(alderskylt); inmatningsyta.add(alderruta); vansterpanel.add(inmatningsyta); vansterpanel.add(new JPanel()); underpanel.add(vansterpanel); textyta = new JTextArea(20,25); textyta.setBackground(Color.white); underpanel.add(new JScrollPane(textyta)); jp.add(underpanel); return jp; } /** * Lyssnarmetod som tar hand om de olika menyvalen. * @param e ActionEvent-objektet som ger handlingen. */ public void actionPerformed(ActionEvent e) { if (e.getSource() == avsluta) { System.exit(0); } } /** * Huvudmetod som startar och kör programmet. * @param arg används ej */ public static void main (String[] arg) { UppgiftB ub = new UppgiftB(); } }