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!