안드로이드 개발 질문/답변
(글 수 45,052)
저기 제가 일단 자바의 테이블에 db의 내용을 띄우는 것까지는 했는데.. 테이블에 띄운 값중에 하나를 클릭했을때 그 값을 textfield에 뿌려주는 것까지는 했는데 그 중에 저장되어 있는 경로의 이미지를 띄우고 싶은데.. 그게 안되네요.. 뭐가 안되는건지 좀 알려주세여...ㅠㅠㅠ 빨간색 부분이 이미지 그 부분입니다..ㅠㅠ
======================================= 소스 =============================================
import java.awt.*;
import java.awt.event.*;
//import java.io.*;
import java.util.*;
import java.awt.event.*;
//import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
//import javax.swing.event.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import java.sql.*;
import javax.swing.border.*;
//import javax.swing.event.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import java.sql.*;
public class server extends JPanel implements ActionListener, MouseListener
{
{
private static final long serialVersionUID = 1L;
private String dsn = "jdbc:odbc:serverdata";
private Connection conn;
private Statement stat;
private String scarnum;
private String sdate;
private String slat;
private String slog;
private String image;
private String path=null;
private String pathsave = null;
private String dsn = "jdbc:odbc:serverdata";
private Connection conn;
private Statement stat;
private String scarnum;
private String sdate;
private String slat;
private String slog;
private String image;
private String path=null;
private String pathsave = null;
private JTextField[] field = new JTextField[6];
private JPanel datapane;
private JPanel PicturePanel = null;
private JPanel total;
private JPanel data;
private JPanel date;
private JPanel carnum;
private JPanel lat;
private JPanel log;
private JPanel buname;
private JPanel load;
private JButton btok;
private JButton bttotal;
private Image img;
private ImageIcon p;
private JLabel PictureText;
String colNames[] = {"번호","차량번호","날짜","위도","경도","사진경로",};
DefaultTableModel model;
JTable table;
public server(String str)
{
super();
init();
this.start();
}
public void init()
{
setLayout(new BorderLayout());
setBorder(new EtchedBorder());
model = new DefaultTableModel(colNames, 0)
{
public boolean isCellEditable(int row, int col)
{
// 모든 셀을 편집할 수 없도록 한다.
return false;
}
};
table = new JTable(model);
DefaultTableCellRenderer asd = new DefaultTableCellRenderer();
DefaultTableCellRenderer asd1 = new DefaultTableCellRenderer();
asd.setHorizontalAlignment(SwingConstants.RIGHT);
asd1.setHorizontalAlignment(SwingConstants.CENTER);
TableColumnModel sdf = table.getColumnModel();
for(int i = 0 ; i < sdf.getColumnCount() ; i++)
{
sdf.getColumn(i).setCellRenderer(asd1); //금액을 뺀 나머지의 값들은 가운데 정렬
}
table.addMouseListener(this);
table.setShowHorizontalLines(false); //수평 선 없애기
table.setRowMargin(0);
JScrollPane sc = new JScrollPane(table);
private JPanel datapane;
private JPanel PicturePanel = null;
private JPanel total;
private JPanel data;
private JPanel date;
private JPanel carnum;
private JPanel lat;
private JPanel log;
private JPanel buname;
private JPanel load;
private JButton btok;
private JButton bttotal;
private Image img;
private ImageIcon p;
private JLabel PictureText;
String colNames[] = {"번호","차량번호","날짜","위도","경도","사진경로",};
DefaultTableModel model;
JTable table;
public server(String str)
{
super();
init();
this.start();
}
public void init()
{
setLayout(new BorderLayout());
setBorder(new EtchedBorder());
model = new DefaultTableModel(colNames, 0)
{
public boolean isCellEditable(int row, int col)
{
// 모든 셀을 편집할 수 없도록 한다.
return false;
}
};
table = new JTable(model);
DefaultTableCellRenderer asd = new DefaultTableCellRenderer();
DefaultTableCellRenderer asd1 = new DefaultTableCellRenderer();
asd.setHorizontalAlignment(SwingConstants.RIGHT);
asd1.setHorizontalAlignment(SwingConstants.CENTER);
TableColumnModel sdf = table.getColumnModel();
for(int i = 0 ; i < sdf.getColumnCount() ; i++)
{
sdf.getColumn(i).setCellRenderer(asd1); //금액을 뺀 나머지의 값들은 가운데 정렬
}
table.addMouseListener(this);
table.setShowHorizontalLines(false); //수평 선 없애기
table.setRowMargin(0);
JScrollPane sc = new JScrollPane(table);
//DB에 저장되어 있는 값들이 나타나는 패널
datapane = new JPanel();
sc.setPreferredSize(new Dimension(670,620)); //table의 크기 조절
datapane.add(sc);
datapane.setBorder(new TitledBorder(new SoftBevelBorder(SoftBevelBorder.RAISED)," 저장 데이터 "));
total = new JPanel();
//사진과 정보가 들어가는 패널
total.setPreferredSize(new Dimension(480,100));
total.setBorder(new TitledBorder(new SoftBevelBorder(SoftBevelBorder.RAISED)," 정 보 "));
total.setLayout(new GridLayout(2,1));
//사진이 나타나는 패널
PicturePanel = new JPanel();
PicturePanel.setBorder(new TitledBorder(new SoftBevelBorder(SoftBevelBorder.RAISED)," 사 진 "));
//정보들이 나타나는 패널
data = new JPanel();
data.setBorder(new TitledBorder(new SoftBevelBorder(SoftBevelBorder.RAISED)," 정 보 "));
data.setLayout(new GridLayout(6,1));
date = new JPanel();
date.setFont(new Font("맑은고딕",Font.BOLD, 20));
field[0] = new JTextField(30);
field[0].setEditable(false);
date.add(new JLabel("날 짜 : "));
date.add(field[0]);
carnum = new JPanel();
carnum.setFont(new Font("맑은고딕",Font.BOLD, 20));
field[1] = new JTextField(30);
field[1].setEditable(false);
carnum.add(new JLabel("차 번 호 : "));
carnum.add(field[1]);
lat = new JPanel();
lat.setFont(new Font("맑은고딕",Font.BOLD, 20));
field[2] = new JTextField(30);
field[2].setEditable(false);
lat.add(new JLabel("위 도 : "));
lat.add(field[2]);
log = new JPanel();
log.setFont(new Font("맑은고딕",Font.BOLD, 20));
field[3] = new JTextField(30);
field[3].setEditable(false);
log.add(new JLabel("경 도 : "));
log.add(field[3]);
load= new JPanel();
load.setFont(new Font("맑은고딕",Font.BOLD, 20));
field[5] = new JTextField(30);
field[5].setEditable(false);
load.add(new JLabel("경 로 : "));
load.add(field[5]);
path = field[5].getText();
System.out.println(">>>"+path);
//사진 로드
p = new ImageIcon(path);
datapane = new JPanel();
sc.setPreferredSize(new Dimension(670,620)); //table의 크기 조절
datapane.add(sc);
datapane.setBorder(new TitledBorder(new SoftBevelBorder(SoftBevelBorder.RAISED)," 저장 데이터 "));
total = new JPanel();
//사진과 정보가 들어가는 패널
total.setPreferredSize(new Dimension(480,100));
total.setBorder(new TitledBorder(new SoftBevelBorder(SoftBevelBorder.RAISED)," 정 보 "));
total.setLayout(new GridLayout(2,1));
//사진이 나타나는 패널
PicturePanel = new JPanel();
PicturePanel.setBorder(new TitledBorder(new SoftBevelBorder(SoftBevelBorder.RAISED)," 사 진 "));
//정보들이 나타나는 패널
data = new JPanel();
data.setBorder(new TitledBorder(new SoftBevelBorder(SoftBevelBorder.RAISED)," 정 보 "));
data.setLayout(new GridLayout(6,1));
date = new JPanel();
date.setFont(new Font("맑은고딕",Font.BOLD, 20));
field[0] = new JTextField(30);
field[0].setEditable(false);
date.add(new JLabel("날 짜 : "));
date.add(field[0]);
carnum = new JPanel();
carnum.setFont(new Font("맑은고딕",Font.BOLD, 20));
field[1] = new JTextField(30);
field[1].setEditable(false);
carnum.add(new JLabel("차 번 호 : "));
carnum.add(field[1]);
lat = new JPanel();
lat.setFont(new Font("맑은고딕",Font.BOLD, 20));
field[2] = new JTextField(30);
field[2].setEditable(false);
lat.add(new JLabel("위 도 : "));
lat.add(field[2]);
log = new JPanel();
log.setFont(new Font("맑은고딕",Font.BOLD, 20));
field[3] = new JTextField(30);
field[3].setEditable(false);
log.add(new JLabel("경 도 : "));
log.add(field[3]);
load= new JPanel();
load.setFont(new Font("맑은고딕",Font.BOLD, 20));
field[5] = new JTextField(30);
field[5].setEditable(false);
load.add(new JLabel("경 로 : "));
load.add(field[5]);
path = field[5].getText();
System.out.println(">>>"+path);
//사진 로드
p = new ImageIcon(path);
PictureText = new JLabel("",p,JLabel.CENTER);
PicturePanel.add(PictureText);
image = field[5].getText();
System.out.println(image);
buname = new JPanel();
buname.setFont(new Font("맑은고딕",Font.BOLD, 20));
btok = new JButton("검 색");
bttotal = new JButton("전 체 검 색");
field[4] = new JTextField(8);
buname.add(new JLabel(" "));
buname.add(field[4]);
buname.add(btok);
buname.add(bttotal);
data.add(date);
data.add(carnum);
data.add(lat);
data.add(log);
data.add(load);
data.add(buname);
total.add(PicturePanel);
total.add(data);
add(datapane,BorderLayout.EAST);
add(total,BorderLayout.WEST);
showList();
}
public void clearRows(){
int rowCount = model.getRowCount(); //table의 열의 갯수를 가져온다.
if (rowCount != 0)
{
for (int i=1; i<=rowCount; i++ )
{
model.removeRow(0); //table의 시작위치가 처음으로 바뀐다.
}
}
}
public void showList(){ //데이터베이스에 저장된 값중에서 현화의 지출과 맞는 것만 table에 출력
clearRows();
String sql = "select * from serverdata"; //DB의 모든 값을 화면에 보여주는 부분
DB_connect(sql,0);
}
public void selectUser()
{
clearRows();
String num = (String)field[4].getText();
System.out.println(num);
String sql = "select * from serverdata WHERE 차량번호 LIKE '%"+num+"%'";
DB_connect(sql,0);
}
public Statement DB_connect(String sql, int dbset){
try
{
// JDBC-ODBC 브릿지 드라이버를 로드한다
Class.forName("sun.jdbc.odbc.serverdata"); //에러가 없을 경우 이 문구를 출력
}
catch (java.lang.ClassNotFoundException e)
{
System.err.println(e.getMessage()); //에러가 발생할 경우 그 발생한 에러에 관한 문구 출력
}
try
{
// 데이터 베이스를 한글에 저장하기 위해서 인코딩을 지정한다
Properties prop = new Properties();
prop.put("charSet", "KSC5601");
PicturePanel.add(PictureText);
image = field[5].getText();
System.out.println(image);
buname = new JPanel();
buname.setFont(new Font("맑은고딕",Font.BOLD, 20));
btok = new JButton("검 색");
bttotal = new JButton("전 체 검 색");
field[4] = new JTextField(8);
buname.add(new JLabel(" "));
buname.add(field[4]);
buname.add(btok);
buname.add(bttotal);
data.add(date);
data.add(carnum);
data.add(lat);
data.add(log);
data.add(load);
data.add(buname);
total.add(PicturePanel);
total.add(data);
add(datapane,BorderLayout.EAST);
add(total,BorderLayout.WEST);
showList();
}
public void clearRows(){
int rowCount = model.getRowCount(); //table의 열의 갯수를 가져온다.
if (rowCount != 0)
{
for (int i=1; i<=rowCount; i++ )
{
model.removeRow(0); //table의 시작위치가 처음으로 바뀐다.
}
}
}
public void showList(){ //데이터베이스에 저장된 값중에서 현화의 지출과 맞는 것만 table에 출력
clearRows();
String sql = "select * from serverdata"; //DB의 모든 값을 화면에 보여주는 부분
DB_connect(sql,0);
}
public void selectUser()
{
clearRows();
String num = (String)field[4].getText();
System.out.println(num);
String sql = "select * from serverdata WHERE 차량번호 LIKE '%"+num+"%'";
DB_connect(sql,0);
}
public Statement DB_connect(String sql, int dbset){
try
{
// JDBC-ODBC 브릿지 드라이버를 로드한다
Class.forName("sun.jdbc.odbc.serverdata"); //에러가 없을 경우 이 문구를 출력
}
catch (java.lang.ClassNotFoundException e)
{
System.err.println(e.getMessage()); //에러가 발생할 경우 그 발생한 에러에 관한 문구 출력
}
try
{
// 데이터 베이스를 한글에 저장하기 위해서 인코딩을 지정한다
Properties prop = new Properties();
prop.put("charSet", "KSC5601");
// 드라이버에 DSN과 프로퍼티를 지정한다
conn = DriverManager.getConnection(dsn, prop);
// 데이터 베이스에 접근하기 위해, statement를 생성한다
stat = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
if(dbset == 0)
{
ResultSet RS = stat.executeQuery(sql);
while (RS.next())
{
Object [] insertData = {RS.getInt(1),RS.getString(2),
RS.getString(3), RS.getString(4), RS.getString(5),
RS.getString(6)};
model.addRow(insertData);
}
RS.first();
}
else{
stat.executeUpdate(sql);
}
stat.close();
conn.close();
}
catch (SQLException e)
{
System.out.println(e.toString());
}
return stat;
}
conn = DriverManager.getConnection(dsn, prop);
// 데이터 베이스에 접근하기 위해, statement를 생성한다
stat = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
if(dbset == 0)
{
ResultSet RS = stat.executeQuery(sql);
while (RS.next())
{
Object [] insertData = {RS.getInt(1),RS.getString(2),
RS.getString(3), RS.getString(4), RS.getString(5),
RS.getString(6)};
model.addRow(insertData);
}
RS.first();
}
else{
stat.executeUpdate(sql);
}
stat.close();
conn.close();
}
catch (SQLException e)
{
System.out.println(e.toString());
}
return stat;
}
public void start(){
MouseAdapter click = new MouseAdapter(){
public void mouseClicked(MouseEvent e){
if(e.getSource()== btok) selectUser();
else if(e.getSource()== bttotal) showList();
else System.exit(0);
}};
btok.addMouseListener(click);
bttotal.addMouseListener(click);
}
public void actionPerformed(ActionEvent we) {}
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
Object obj = e.getSource();
if(obj == table)
{
int row = 0;
row = table.getSelectedRow();
TableModel model = table.getModel();
scarnum = ""+ model.getValueAt(row, 1);
sdate = ""+ model.getValueAt(row, 2);
slat = ""+ model.getValueAt(row, 3);
slog = ""+ model.getValueAt(row, 4);
pathsave = ""+ model.getValueAt(row, 5);
field[0].setText(scarnum);
field[1].setText(sdate);
field[2].setText(slat);
field[3].setText(slog);
field[5].setText(pathsave);
// TODO Auto-generated method stub
Object obj = e.getSource();
if(obj == table)
{
int row = 0;
row = table.getSelectedRow();
TableModel model = table.getModel();
scarnum = ""+ model.getValueAt(row, 1);
sdate = ""+ model.getValueAt(row, 2);
slat = ""+ model.getValueAt(row, 3);
slog = ""+ model.getValueAt(row, 4);
pathsave = ""+ model.getValueAt(row, 5);
field[0].setText(scarnum);
field[1].setText(sdate);
field[2].setText(slat);
field[3].setText(slog);
field[5].setText(pathsave);
}
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}