Kod do wykładu 4
Slajdy z wykładu są uzupełniane przez przykłady wykorzystania omawianych funkcjonalności. Poniżej spis dostępnych przykładów.
Wykład 4 - Wyjątki, javax.swing (GUI)
- Menu
public class ExampleMenu extends JFrame { ExampleMenu() { this.setSize(500,500); JMenuBar menuBar = new JMenuBar(); this.setJMenuBar(menuBar); JMenu menu = new JMenu("Menu"); menuBar.add(menu); JMenuItem menuItem1 = new JMenuItem("Exit"); menu.add(menuItem1); menuItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, ActionEvent.ALT_MASK)); menuItem1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); } public static void main(String[] args) { ExampleMenu okno = new ExampleMenu(); okno.setVisible(true); }
- Kontrolki wielokrotnego wyboru - czyli użycie checkbox-ów.
package pw.java.wyk4.KomponentySwing; import java.awt.*; import javax.swing.*; import java.awt.event.*; public class JCheckBoxDemo extends JFrame { JTextArea t = new JTextArea(); JCheckBox cb1 = new JCheckBox("Pole wyboru 1"), cb2 = new JCheckBox("Pole wyboru 2"), cb3 = new JCheckBox("Pole wyboru 3"); ActionListener cbListener = new ActionListener() { public void actionPerformed(ActionEvent e) { Object obj = e.getSource(); if (obj == cb1) if (cb1.isSelected()) t.append("Pole 1 ustawione\n"); else t.append("Pole 1 wyczyszczone\n"); if (obj == cb2) if (cb2.isSelected()) t.append("Pole 2 ustawione\n"); else t.append("Pole 2 wyczyszczone\n"); if (obj == cb3) if (cb3.isSelected()) t.append("Pole 3 ustawione\n"); else t.append("Pole 3 wyczyszczone\n"); } }; public JCheckBoxDemo() { super("JCheckBoxDemo"); setDefaultCloseOperation(DISPOSE_ON_CLOSE); setLayout(new BorderLayout()); cb1.addActionListener(cbListener); cb2.addActionListener(cbListener); cb3.addActionListener(cbListener); JPanel panelCheckBox = new JPanel(); panelCheckBox.setLayout(new FlowLayout(FlowLayout.LEFT)); panelCheckBox.add(cb1); panelCheckBox.add(cb2); panelCheckBox.add(cb3); add(BorderLayout.NORTH, panelCheckBox); //add(BorderLayout.CENTER, t); add(BorderLayout.CENTER, new JScrollPane(t)); } public static void main(String args[]) { JFrame f = new JCheckBoxDemo(); f.setBounds(100, 100, 400, 200); f.setVisible(true); } }
- Kontrolki jednokrotnego wyboru - radiobutton.
public class JRadioButtonDemo extends JFrame { JLabel etykieta = new JLabel(); ButtonGroup grupa = new ButtonGroup(); JRadioButton rb1 = new JRadioButton("jeden", false), rb2 = new JRadioButton("dwa", false), rb3 = new JRadioButton("trzy", false); ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent e) { etykieta.setText("Przycisk wyboru " + ((JRadioButton) e.getSource()).getText()); } }; public JRadioButtonDemo() { super("JRadioButtonDemo"); setDefaultCloseOperation(DISPOSE_ON_CLOSE); setLayout(new FlowLayout()); // Grupowanie obektow JRadioButton do ButtonGroup - tylko jeden moze byc zaznaczony grupa.add(rb1); grupa.add(rb2); grupa.add(rb3); rb1.addActionListener(listener); rb2.addActionListener(listener); rb3.addActionListener(listener); add(rb1); add(rb2); add(rb3); add(etykieta); } public static void main(String args[]) { final JFrame f = new JRadioButtonDemo(); f.setBounds(100, 100, 300, 200); f.setVisible(true); } }
- Rysowanie kół przy kliknięciu myszą
public class RysowanieMysz { public static void main(String[] args) { JFrame f = new JFrame("Kliknij mysza..."); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new MyPanel()); f.pack(); f.setVisible(true); } } class MyPanel extends JPanel { private int MAKSYMALNA_LICZBA_ELEMENTOW = 5; private int[] x = new int [MAKSYMALNA_LICZBA_ELEMENTOW]; private int[] y = new int [MAKSYMALNA_LICZBA_ELEMENTOW]; private int licznikKlikniec = 0; public MyPanel() { addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { if (licznikKlikniec < MAKSYMALNA_LICZBA_ELEMENTOW){ x[licznikKlikniec] = e.getX(); y[licznikKlikniec] = e.getY(); licznikKlikniec++; repaint(); } else{ //Przekroczona dopuszczalna ilosc klikniec... getGraphics().drawString("Elementy przechowywane w tablicy o maksymalnej liczbie elementow: " + MAKSYMALNA_LICZBA_ELEMENTOW, 20, 20); getGraphics().drawString("Komentarz ten dodano metoda JPanel.getGraphics().drawString(\"...\")", 20, 35); getGraphics().drawString("Zmien rozmiar okna - komentarz zniknie, wywietli sie tylko grafika z metody paintComponent", 20, 50); } if (e.getButton() == MouseEvent.BUTTON3) wyczyscElementy(); } }); } public Dimension getPreferredSize() { return new Dimension(550,300); } public void wyczyscElementy(){ licznikKlikniec = 0; repaint(); } protected void paintComponent(Graphics g) { super.paintComponent(g); for (int i = 0; i<licznikKlikniec; i++){ g.fillOval(x[i], y[i], 40, 40); g.drawString(""+i, x[i], y[i]); } } }
- Więcej przykładów w paczce z projektem!