[Java] swing - 4

원종서·2021년 10월 20일
0

swing

목록 보기
4/4
post-thumbnail

TabbedPaneExample

  • 컴포넌트의 그룹을 선택할때 사용되는 객체


public class TabbedPaneExample {
    JFrame f;
    TabbedPaneExample(){
        f= new JFrame();
        JTextArea ta = new JTextArea(200,200);
        JPanel p1 = new JPanel();
        p1.add(ta);

        JPanel p2= new JPanel();
        JPanel p3= new JPanel();

        JTabbedPane tp = new JTabbedPane();
        tp.setBounds(50,50,200,200);
        tp.add("main",p1);
        tp.add("visit",p2);
        tp.add("help",p3);

        f.add(tp);

        f.setSize(400,400);

        f.setLayout(null);
        f.setVisible(true);
    }
    public  static  void main(String[] args){
        new TabbedPaneExample();
    }
}

JSlider

  • 값을 변경할 수 있는 슬라이드를 만들어줌

import javax.swing.*;

public class SliderExample extends  JFrame {
    SliderExample(){
        JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 50, 25);
        slider.setMinorTickSpacing(2);
        slider.setMajorTickSpacing(10);
        slider.setPaintTicks(true);
        slider.setPaintLabels(true);
        slider.setPaintTrack(true);

        JPanel panel = new JPanel();
        panel.add(slider);
        add(panel);
    }
    public  static void main(String[] args){
        SliderExample frame = new SliderExample();
        frame.pack();
        frame.setVisible(true);
    }
}

JSpinner

  • 단일 라인 입력 필드 객체
  • 유저가 정렬된 순서로부터 객체 값의 번호를 선택할 수 있다.

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class SpinnerExample {
    public static  void main(String[] args) {
        JFrame f = new JFrame("Spinner Example");
        final JLabel label = new JLabel();

        label.setHorizontalAlignment(JLabel.CENTER);
        label.setSize(250, 100);

        SpinnerModel value = new SpinnerNumberModel(5, 0, 10, 1);

        JSpinner spiner = new JSpinner(value);
        spiner.setBounds(100, 100, 50, 30);
        f.add(spiner);
        f.add(label);
        f.setSize(300, 300);
        f.setLayout(null);
        f.setVisible(true);
        spiner.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                label.setText("Value : " + ((JSpinner) e.getSource()).getValue());
            }
        });
    }
}

JDialog

  • JDialog 컨트롤은 사용자로부터 어떤 형태의 입력을 받는 데 사용되는 테두리와 제목이 있는 최상위 창을 나타냄

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class DialogExample {
    private static JDialog d;
    DialogExample() {
        JFrame f= new JFrame();
        d = new JDialog(f , "Dialog Example", true);
        d.setLayout( new FlowLayout() );
        JButton b = new JButton ("OK");
        b.addActionListener ( new ActionListener()
        {
            public void actionPerformed( ActionEvent e )
            {
                DialogExample.d.setVisible(false);
            }
        });
        d.add( new JLabel ("Click button to continue."));
        d.add(b);
        d.setSize(300,300);
        d.setVisible(true);
    }
    public static void main(String args[])
    {
        new DialogExample();
    }
}

JPanel

  • 가장 단순한 컴포넌트
  • 어플리케이션이 어느 다른 컴포넌트를 부착시킬 수 있는 공간을 제공해줌

import javax.swing.*;
import java.awt.*;

public class PanelExample extends JPanel {
    PanelExample(){
        JFrame jFrame = new JFrame("Panel Example");
        setBounds(40,80,200,200);
        setBackground(Color.gray);

        JButton b1 = new JButton("Button 1");
        b1.setBounds(50,100,80,30);
        b1.setBackground(Color.yellow);

        JButton b2 = new JButton("Button 2");
        b1.setBounds(100,100,80,30);
        b1.setBackground(Color.green);

        add(b1); add(b2);

        jFrame.add(this);
        jFrame.setSize(400,400);
        jFrame.setLayout(null);
        jFrame.setVisible(true);
    }
    public static  void main(String[] args){
        new PanelExample();
    }
}

JFileChooser

  • 유저가 파일을 선택할 수 있는 다이얼로그 윈도우 폼을 보여주는 객체

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

public class FileChooserExample extends JFrame implements ActionListener {
    JMenuBar mb;
    JMenu file;
    JMenuItem open;
    JTextArea ta;
    FileChooserExample(){
        open = new JMenuItem("Open file");
        open.addActionListener(this);

        file = new JMenu("File");
        file.add(open);

        mb = new JMenuBar();
        mb.setBounds(0,0,800,20);
        mb.add(file);
        ta= new JTextArea(800,800);
        ta.setBounds(0,20,800,800);
        add(mb);
        add(ta);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()== open){
            JFileChooser fc = new JFileChooser();
            int i = fc.showOpenDialog(this);
            if(i == JFileChooser.APPROVE_OPTION){
                File f = fc.getSelectedFile();
                String filePath = f.getPath();
                try{
                    BufferedReader br = new BufferedReader(new FileReader(filePath));
                    String s1 = "", s2="";
                    while((s1=br.readLine())!=null){
                        s2+=s1+"\n";
                    }
                    ta.setText(s2);
                    br.close();
                }catch(Exception ex){
                    ex.printStackTrace();
                }
            }
        }
    }
    public  static  void main(String[] args){
        FileChooserExample om = new FileChooserExample();
        om.setSize(500,500);
        om.setLayout(null);
        om.setVisible(true);
        om.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}

JToggleButton

  • 토글 버튼 객체
  • on / off

import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JFrame;
import javax.swing.JToggleButton;

public class JToggleButtonExample extends JFrame implements ItemListener {
    public static  void main(String[] args){
        new JToggleButtonExample();
    }
    private JToggleButton button;
    JToggleButtonExample(){
        setTitle("JToggleButton with ItemListener Example");
        // what is flowlayout ?
        setLayout(new FlowLayout());
        setJToggleButton();
        setAction();
        setSize(200,200);
        setVisible(true);
    }

    private void setJToggleButton(){
        button = new JToggleButton("ON");
        add(button);
    }
    private void setAction(){
        button.addItemListener(this);
    }

    @Override
    public void itemStateChanged(ItemEvent e) {
            if(button.isSelected()){
                button.setText("OFF");
            }
            else{
                button.setText("ON");
            }
    }
}

JToolBar

  • JToolBar 컨테이너는 다른 컴포턴트를 구룹짓게 도와줌
  • JToolBar는 일반적으로 사용되는 작업이나 컨트롤을 표시하는 데 유용한 구성 요소를 제공

import javax.swing.*;
import java.awt.*;

public class JToolBarExample {
    public static  void main(final String args[]){

        JFrame myFrame = new JFrame("JToolBar Exampe");
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JToolBar toolBar = new JToolBar();
        toolBar.setRollover(true);

        JButton button = new JButton("File");

        toolBar.add(button);
        toolBar.addSeparator();
        toolBar.add(new JButton("Edit"));
        toolBar.add(new JComboBox(new String[] {"Opt-1","Opt-2", "Opt-3","Opt-4"}));

        Container contentPane = myFrame.getContentPane();
        contentPane.add(toolBar, BorderLayout.NORTH);

        JTextArea textArea = new JTextArea(500,500);

        JScrollPane jScrollPane= new JScrollPane(textArea);
        contentPane.add(jScrollPane,BorderLayout.EAST);
        myFrame.setSize(450,250);
        myFrame.setVisible(true);
    }
}

JFrame

  • 메인 윈도우 같이 작동함
  • Frame과 달리, 윈도우를 숨키거나 닫는 옵션을 제공함 (using setDefaultCloseOperation(int) method)

import javax.swing.*;
import java.awt.*;

public class JFrameExample {
    public static  void main (String s[]){
        JFrame frame = new JFrame("JFrame Example");
        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout());

        JLabel  label = new JLabel("JFrame By Example");

        JButton button = new JButton("Button");

        panel.add(label);
        panel.add(button);

        frame.add(panel);
        frame.setSize(400,400   );
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

JComponent

  • JComponent 클래스는 최상위 컨테이너를 제외한 모든 Swing 구성 요소의 기본 클래스
  • J 로 시작하는 스윙 구성 요소는 JComponent 클래스의 하위 항목
  • JFrame과 JDialog는 최상위 컨테이너의 자식이기 때문에 JComponent 클래스를 상속하지 않습니다

import javax.swing.*;
import java.awt.*;

class  MyJComponent extends JComponent{
    public void paint(Graphics g){
        g.setColor(Color.green);
        g.fillRect(30,30,100,100);
    }
}

public class JComponentExample {
    public static  void main(String args[]){
        MyJComponent com = new MyJComponent();
        // create a basic JFrame;
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame jFrame =new JFrame("JComponent Example");
        jFrame.setSize(300,200);
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // add the JCOmponent to main frame
        jFrame.add(com);
        jFrame.setVisible(true);
    }
}

0개의 댓글