Lab8 프로젝트 디렉토리 안에 모든 파일(src/*.java & bin/*.class)와 보고서 (3~4장)를 넣고 JAVA20_Lab8_분반_학번_이름.zip 압축한 후 제출 (Due by 6/11)
Lab8 package & fileIO
java1-lab8
ptable (CSV file)
PersonStreamTest 동영상을 참고하세요.

Just another Kyoung Shin Park’s Lectures Sites site
Lab8 프로젝트 디렉토리 안에 모든 파일(src/*.java & bin/*.class)와 보고서 (3~4장)를 넣고 JAVA20_Lab8_분반_학번_이름.zip 압축한 후 제출 (Due by 6/11)
Lab8 package & fileIO
java1-lab8
ptable (CSV file)
PersonStreamTest 동영상을 참고하세요.
SliderFrame
SliderFrame
Key Mouse Motion Listener & Adapter
Key Listener
https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html
Mouse Listener
https://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html
Mouse Motion Listener
https://docs.oracle.com/javase/tutorial/uiswing/events/mousemotionlistener.html
Key Adapter
https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyAdapter.html
SliderFrame (JSlider, JLabel, JTextfield, JButton)
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
// SliderFrame shows ChangeListener, KeyListener, ActionListener
public class SliderFrame extends JFrame implements ChangeListener, KeyListener, ActionListener {
    JPanel panel = new JPanel(new BorderLayout());
    JPanel panel1 = new JPanel(new FlowLayout());
    JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 20);
    JLabel label = new JLabel("Value : ", JLabel.CENTER);
    JTextField textfield = new JTextField(10);
    JButton button = new JButton("Close");
    public SliderFrame(String name) {
        super(name);
        this.add(panel);
        this.panel1.add(label);
        this.panel1.add(textfield);
        this.panel.add(slider, BorderLayout.CENTER);
        this.panel.add(panel1, BorderLayout.NORTH);
        this.panel.add(button, BorderLayout.SOUTH);
        this.slider.addChangeListener(this); // ChangeListener stateChanged
        this.textfield.addKeyListener(this); // KeyListener keyTyped, keyPressed, keyReleased
        this.button.addActionListener(this); // ActionListener actionPerformed
        this.setSize(250, 150);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new SliderFrame("SliderFrame");
    }
    @Override
    public void stateChanged(ChangeEvent e) {
        JSlider s = (JSlider)e.getSource();
        textfield.setText("" + s.getValue()); 
    }
    @Override
    public void keyTyped(KeyEvent e) { 
    }
    @Override
    public void keyPressed(KeyEvent e) {
    }
    @Override
    public void keyReleased(KeyEvent e) {
        int key = e.getKeyCode();
        if (key == KeyEvent.VK_ENTER) {
            Toolkit.getDefaultToolkit().beep(); 
            System.out.println("ENTER pressed");
            JTextField t = (JTextField) e.getSource();
            int value = Integer.parseUnsignedInt(t.getText());
            slider.setValue(value);
        }
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        JButton b = (JButton)e.getSource();
        if (b == button) {
            this.setVisible(false);
            this.dispose();
        }
    }
}
	Slider(JSlider, JLabel)
1. event listener using anonymous class
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
// SliderFrame1 shows event listener using anonymous class
public class SliderFrame1 extends JFrame {
    JPanel panel = new JPanel(new BorderLayout());
    JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 20);
    JLabel label = new JLabel("Value : ", JLabel.CENTER);
    public SliderFrame1(String name) {
        super(name);
        this.add(panel);
        this.panel.add(slider, BorderLayout.CENTER);
        this.panel.add(label, BorderLayout.SOUTH);
        // using anonymous class
        this.slider.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                JSlider s = (JSlider)e.getSource();
                label.setText("Value : " + s.getValue());
            }
        });
        this.setSize(250, 150);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new SliderFrame1("SliderTest1");
    }
}
2. event listener using interface implements
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
// using implements ChangeListener
public class SliderFrame2 extends JFrame implements ChangeListener {
    JPanel panel = new JPanel(new BorderLayout());
    JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 20);
    JLabel label = new JLabel("Value : ", JLabel.CENTER);
    public SliderFrame2(String name) {
        super(name);
        this.add(panel);
        this.panel.add(slider, BorderLayout.CENTER);
        this.panel.add(label, BorderLayout.SOUTH);
        this.slider.addChangeListener(this); // implements ChangeListener
        this.setSize(250, 150);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new SliderFrame2("SliderTest2");
    }
    @Override
    public void stateChanged(ChangeEvent e) {
        JSlider s = (JSlider)e.getSource();
        label.setText("Value : " + s.getValue());
    }
}
3. event listener using private inner class
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class SliderFrame3 extends JFrame {
    JPanel panel = new JPanel(new BorderLayout());
    JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 20);
    JLabel label = new JLabel("Value : ", JLabel.CENTER);
    // using private inner class
    private class SliderChangeListener implements ChangeListener {
        @Override
        public void stateChanged(ChangeEvent e) {
            JSlider s = (JSlider)e.getSource();
            label.setText("Value : " + s.getValue());
        }
    }
    public SliderFrame3(String name) {
        super(name);
        this.add(panel);
        this.panel.add(slider, BorderLayout.CENTER);
        this.panel.add(label, BorderLayout.SOUTH);
        this.slider.addChangeListener(new SliderChangeListener()); // private class
        this.setSize(250, 150);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new SliderFrame3("SliderTest3");
    }
}
4. event listener using outer class
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
// using private inner class
class SliderChangeListener implements ChangeListener {
    JLabel label = null;
    public SliderChangeListener(JLabel label) {
        this.label = label;
    }
    @Override
    public void stateChanged(ChangeEvent e) {
        JSlider s = (JSlider)e.getSource();
        label.setText("Value : " + s.getValue());
    }
}
public class SliderFrame4 extends JFrame {
    JPanel panel = new JPanel(new BorderLayout());
    JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 20);
    JLabel label = new JLabel("Value : ", JLabel.CENTER);
    public SliderFrame4(String name) {
        super(name);
        this.add(panel);
        this.panel.add(slider, BorderLayout.CENTER);
        this.panel.add(label, BorderLayout.SOUTH);
        this.slider.addChangeListener(new SliderChangeListener(this.label)); // outer class
        this.setSize(250, 150);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new SliderFrame4("SliderTest4");
    }
}
5. event listener using lambda
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
// SliderFrame5 shows event listener using lambda
public class SliderFrame5 extends JFrame {
    JPanel panel = new JPanel(new BorderLayout());
    JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 20);
    JLabel label = new JLabel("Value : ", JLabel.CENTER);
    public SliderFrame5(String name) {
        super(name);
        this.add(panel);
        this.panel.add(slider, BorderLayout.CENTER);
        this.panel.add(label, BorderLayout.SOUTH);
        // using lambda
        this.slider.addChangeListener(e -> { // lambda
                JSlider s = (JSlider)e.getSource();
                label.setText("Value : " + s.getValue());
        });
        this.setSize(250, 150);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new SliderFrame5("SliderTest5");
    }
}
	https://www.javatpoint.com/java-swing
https://www.javatpoint.com/java-jbutton
https://www.javatpoint.com/java-jlabel
https://www.javatpoint.com/java-jtextfield
https://www.javatpoint.com/java-jcheckbox
https://www.javatpoint.com/java-jradiobutton
https://www.javatpoint.com/java-jcombobox
https://www.javatpoint.com/java-jtable
https://www.javatpoint.com/java-jslider
https://www.javatpoint.com/java-jdialog
https://www.javatpoint.com/java-jpanel
https://www.javatpoint.com/java-jfilechooser
https://www.javatpoint.com/java-jtogglebutton
https://www.javatpoint.com/java-jframe
https://www.javatpoint.com/java-jscrollpane
lecture10
java1-lecture10
PersonStreamTest
PersonStreamTest
lecture9
java1-lecture9