26.JAVA 예제 정리 [상속응용]
package com.sist.main;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import com.sist.vo.*;
import com.sist.manager.*;
import java.awt.event.*;
public class MusicFindPanel extends JPanel implements ActionListener {
JLabel la;
JButton b1, b2;
JTable table;
DefaultTableModel model;
JTextField tf;
GenieMusicSystem gm = new GenieMusicSystem();
public MusicFindPanel() {
setLayout(null);
tf = new JTextField();
la = new JLabel("Music 검색", JLabel.CENTER);
la.setFont(new Font("궁서체", Font.BOLD, 35));
la.setBounds(10, 15, 760, 50);
add(la);
tf.setBounds(10, 70, 200, 30);
add(tf);
String[] col = { "순위", "곡명", "가수명", "앨범" };
String[][] row = new String[0][4];
model = new DefaultTableModel(row, col);
table = new JTable(model);
JScrollPane js = new JScrollPane(table);
js.setBounds(10, 105, 760, 400);
add(js);
tf.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub\
if (e.getSource() == tf)// 엔터를 쳤다면
{
// 입력 데이터 읽기
String fd = tf.getText();
if (fd.trim().length() < 1) {
// 입력이 안된 상태
JOptionPane.showMessageDialog(this, "검색어를 입력하세요");
// JOptionPane.showConfirmDialog(this, "검색어를 입력하세요");
tf.requestFocus();
return;
}
musicFind(fd);
}
}
public void musicFind(String fd) {
for (int i = model.getRowCount() - 1; i >= 0; i--) {
model.removeRow(i);
}
MusicVO[] music = gm.musicFindData(fd);
for (MusicVO vo : music) {
String[] data = { String.valueOf(vo.getNo()), vo.getTitle(), vo.getSinger(), vo.getAlbum()
};
model.addRow(data);
}
}
}
package com.sist.main;
import java.awt.Color;
import com.sist.vo.*;
import java.awt.Font;
import javax.swing.*;
import javax.swing.table.*;
import com.sist.manager.*;
import java.awt.event.*;
public class MusicListPanel extends JPanel implements ActionListener {
JLabel la;
JButton b1, b2;
JTable table;
DefaultTableModel model;
GenieMusicSystem gm = new GenieMusicSystem();
public MusicListPanel() {
setLayout(null);
la = new JLabel("Music Top 50", JLabel.CENTER);
la.setFont(new Font("궁서체", Font.BOLD, 35));
la.setBounds(10, 15, 760, 50);
add(la);
b1 = new JButton("지니뮤직");
b2 = new JButton("멜론");
b1.setBounds(10, 75, 120, 30);
b2.setBounds(135, 75, 100, 30);
add(b1);
add(b2);
String[] col = { "순위", "곡명", "가수명", "앨범" };
String[][] row = new String[0][4];
model = new DefaultTableModel(row, col);
table = new JTable(model);
JScrollPane js = new JScrollPane(table);
js.setBounds(10, 110, 760, 400);
add(js);
b1.addActionListener(this);
b2.addActionListener(this);
table.setRowHeight(40);
}
public void musicprint(int type) {
for (int i = model.getRowCount() - 1; i >= 0; i--) {
model.removeRow(i);
}
if (type == 1) {
gm = new GenieMusicSystem();
la.setText("지니뮤직 TOP 50");
} else {
gm = new MelonMusicSystem();
la.setText("멜론뮤직 TOP 50");
}
//la.setText(gm.title);
MusicVO[] musics = gm.musicAllData();
for (MusicVO vo : musics) {
String[] data = { String.valueOf(vo.getNo()), vo.getTitle(), vo.getSinger(), vo.getAlbum() };
model.addRow(data);
}
}
// 버튼 처리 메소드
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == b1) { // b1번 버튼을 눌렀다면
musicprint(1);
b1.setEnabled(false);
b2.setEnabled(true);
} else if (e.getSource() == b2) {
musicprint(2);
b2.setEnabled(false);
b1.setEnabled(true);
}
}
}
package com.sist.main;
import javax.swing.*;
import javax.swing.table.*;
public class MusicUserMain extends JFrame {
JTabbedPane tp;
MusicListPanel mlp = new MusicListPanel();
MusicFindPanel mfp = new MusicFindPanel();
MusicDetailPanel mdp = new MusicDetailPanel();
public MusicUserMain() {
tp = new JTabbedPane();
tp.addTab("뮤직목록", mlp);
tp.addTab("뮤직검색", mfp);
tp.addTab("상세보기", mdp);
tp.setTabPlacement(JTabbedPane.NORTH);
// 윈도우에 추가
add("Center", tp);
setSize(800, 600);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MusicUserMain();
}
}
package com.sist.main;
import javax.swing.*;
import javax.swing.table.*;
public class MusicUserMain extends JFrame {
JTabbedPane tp;
MusicListPanel mlp = new MusicListPanel();
MusicFindPanel mfp = new MusicFindPanel();
MusicDetailPanel mdp = new MusicDetailPanel();
public MusicUserMain() {
tp = new JTabbedPane();
tp.addTab("뮤직목록", mlp);
tp.addTab("뮤직검색", mfp);
tp.addTab("상세보기", mdp);
tp.setTabPlacement(JTabbedPane.NORTH);
// 윈도우에 추가
add("Center", tp);
setSize(800, 600);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MusicUserMain();
}
}
package com.sist.main;
import javax.swing.*;
import javax.swing.table.*;
public class MusicUserMain extends JFrame {
JTabbedPane tp;
MusicListPanel mlp = new MusicListPanel();
MusicFindPanel mfp = new MusicFindPanel();
MusicDetailPanel mdp = new MusicDetailPanel();
public MusicUserMain() {
tp = new JTabbedPane();
tp.addTab("뮤직목록", mlp);
tp.addTab("뮤직검색", mfp);
tp.addTab("상세보기", mdp);
tp.setTabPlacement(JTabbedPane.NORTH);
// 윈도우에 추가
add("Center", tp);
setSize(800, 600);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MusicUserMain();
}
}
package com.sist.vo;
public class MusicVO {
private int no;
private String title;
private String singer;
private String album;
//변수 => 읽기(메모리에서 데이터 가지고 오기) / 쓰기(메모리 저장)
// get변수명() set변수명(매개변수)
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
public String getAlbum() {
return album;
}
public void setAlbum(String album) {
this.album = album;
}
}