1번
import javax.swing.*;
public class Chapter14 extends JFrame {
public Chapter14() {
setTitle("메뉴 만들기");
setDefaultCloseOperation(3);
createMenu();
setSize(300,200);
setVisible(true);
}
private void createMenu() {
JMenu fileMenu = new JMenu("파일");
JMenu editMenu = new JMenu("편집");
JMenu viewMenu = new JMenu("보기");
viewMenu.add(new JMenuItem("화면확대"));
viewMenu.add(new JMenuItem("쪽윤곽"));
JMenu inputMenu = new JMenu("입력");
JMenuBar mb = new JMenuBar();
mb.add(fileMenu);
mb.add(editMenu);
mb.add(viewMenu);
mb.add(inputMenu);
setJMenuBar(mb);
}
static public void main(String[] arg) {
new Chapter14();
}
}
2번
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Chapter14 extends JFrame {
JLabel label = new JLabel();
public Chapter14() {
setTitle("메뉴로 배경 이미지 로딩하기");
setDefaultCloseOperation(3);
createMenu();
setSize(300,200);
getContentPane().add(label);
setVisible(true);
}
void createMenu() {
JMenuBar mb = new JMenuBar();
JMenu fileMenu = new JMenu("파일");
JMenuItem fileItem = new JMenuItem("열기");
fileItem.addActionListener(new MyFileActionListener());
fileMenu.add(fileItem);
mb.add(fileMenu);
setJMenuBar(mb);
}
class MyFileActionListener implements ActionListener{
private JFileChooser chooser;
MyFileActionListener(){
chooser = new JFileChooser();
}
public void actionPerformed(ActionEvent e) {
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"JPG & GIF Images", "jpg", "gif"
);
chooser.setFileFilter(filter);
int ret = chooser.showOpenDialog(null);
if(ret != JFileChooser.APPROVE_OPTION){
JOptionPane.showMessageDialog(null, "파일을 선택하지 않았습니다", "경고", JOptionPane.WARNING_MESSAGE);
return;
}
String filePath = chooser.getSelectedFile().getPath();
label.setIcon(new ImageIcon(filePath));
System.out.println(getWidth() + " " + getHeight());
pack();
}
}
static public void main(String[] arg) {
new Chapter14();
}
}
3번
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Chapter14 extends JFrame {
public Chapter14() {
setTitle("툴바 만들기");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
JToolBar tBar = new JToolBar();
JButton btn = new JButton("종료");
btn.addActionListener(new CloseActionListener());
tBar.add(btn);
c.add(tBar, BorderLayout.NORTH);
setSize(400,400);
setVisible(true);
}
class CloseActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
int result = JOptionPane.showConfirmDialog(null, "정말 종료하시겠습니까", "옵션팬", JOptionPane.YES_NO_OPTION);
if(result == JOptionPane.CLOSED_OPTION) {
return;
}
else if(result == JOptionPane.YES_OPTION) {
System.exit(0);
}
else {
return;
}
}
}
static public void main(String[] arg) {
new Chapter14();
}
}
4번
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Chapter14 extends JFrame {
public Chapter14() {
setTitle("숫자가 아닌 키가 입력되는경우 경고창 만들기");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
JToolBar tBar = new JToolBar();
JTextField textField = new JTextField(10);
textField.addKeyListener(new MyKeyAdapter());
tBar.add(textField);
c.add(tBar, BorderLayout.SOUTH);
setSize(400,400);
setVisible(true);
}
class MyKeyAdapter extends KeyAdapter {
public void keyTyped(KeyEvent e) {
char key = e.getKeyChar();
if(!Character.isDigit(key)){
e.consume();
JOptionPane.showMessageDialog(null, key+"는 숫자 키가 아닙니다. 숫자를 입력하세요.", "경고", JOptionPane.WARNING_MESSAGE);
}
}
}
static public void main(String[] arg) {
new Chapter14();
}
}
5번
//출판사 참고
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.sound.sampled.*;
import javax.swing.*;
public class Chapter14 extends JFrame {
private Clip clip = null;
private AudioInputStream audioStream = null;
private JLabel msgLabel = new JLabel("");
public Chapter14() {
super("오디오 시작 중단 연습");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new FlowLayout());
msgLabel.setFont(new Font("Gothic", Font.PLAIN, 15));
c.add(msgLabel);
setSize(300,150);
setVisible(true);
playAudio("audio\\hiphop.wav");
msgLabel.setText("audio\\hiphop.wav 연주 중");
c.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
msgLabel.setText("audio\\hiphop.wav 연주 계속");
clip.start(); // 중단된 위치에서부터 시작
}
@Override
public void mouseExited(MouseEvent e) {
msgLabel.setText("audio\\hiphop.wav 연주 일시 중단");
clip.stop(); // 중단된 위치에서부터 시작
}
});
}
private void playAudio(String pathName) {
try {
File audioFile = new File(pathName); // 오디오 파일의 경로명
audioStream = AudioSystem.getAudioInputStream(audioFile); // 오디오 파일로부터
clip = AudioSystem.getClip(); // 비어있는 오디오 클립 만들기
clip.open(audioStream); // 재생할 오디오 스트림 열기
clip.start(); // 재생 시작
}
catch (LineUnavailableException e) { e.printStackTrace(); }
catch (UnsupportedAudioFileException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
}
static public void main(String[] arg) {
new Chapter14();
}
}
6번
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Chapter14 extends JFrame{
JButton btn = new JButton("Calculate");
JLabel label = new JLabel("계산 결과 출력");
Chapter14(){
setTitle("다이얼로그 만들기");
setDefaultCloseOperation(3);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(btn);
c.add(label);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
MyDialog dialog = new MyDialog();
dialog.setVisible(true);
}
});
setSize(300,300);
setVisible(true);
}
class MyDialog extends JDialog{
JTextField tf1 = new JTextField(10);
JTextField tf2 = new JTextField(10);
JButton addBtn = new JButton("Add");
MyDialog(){
setLayout(new FlowLayout());
add(new JLabel("두 수를 더합니다"));
add(tf1);
add(tf2);
add(addBtn);
setSize(200,200);
setTitle("Calculation Dialog");
addBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int result = Integer.parseInt(tf1.getText()) + Integer.parseInt(tf2.getText());
label.setText(Integer.toString(result));
setVisible(false);
}
});
}
}
public static void main(String[] args) {
new Chapter14();
}
}
'대학교 수업 > Java 프로그래밍' 카테고리의 다른 글
[Java] 명품 자바 프로그래밍 13장 실습문제 (1~8) (0) | 2022.12.05 |
---|---|
[Java] 명품 자바 프로그래밍 12장 실습문제 (0) | 2022.11.22 |
[Java] 명품 자바 프로그래밍 10장 실습문제 (0) | 2022.10.11 |
[Java] 명품 자바 프로그래밍 10장 Open Challenge (0) | 2022.10.11 |
[Java] 명품 자바 프로그래밍 9장 Open Challenge (0) | 2022.10.11 |