JList에 관한 질문입니다.
영동교
벡터로 게시판하나를 만들고 있는 중입니다.
자바 스윙을 이용하여서 만들고 있습니다.
근데 jlist에는 add라는 이 없고 상속을 받아서 쓰는것 으로 알고 있습니다.
그럼 jlist.add(asd);
이것은 하니 계속 에러 표시가 나는데 왜 그렇습니까?
상속을 받았으니 당연이 사용할수 있는것 아닌지?
방법이 있다면 어떻게 해야 합니까?
아래의 소스는 제가 현재 하고 있는 것입니다.
아 그리고 질문이 하나 더 있습니다.
view라는 함수를 통해서 저장된 값들을 눈으로 확인하고자 콘솔로 뿌리도록 하였습니다.
값을 넘길때도 맨 처음의 넘긴 값만 확인을 할려고 0을넘겼는데
에러메세지로 자꾸 범위를 초과하였다고 나옵니다.
답변 해주시면 감사하겠습니다..ㅠ.ㅠ
//====================================================import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
public class r757_2 extends JFrame implements Serializable,ActionListener, KeyListener
{
JDialog dlg_write = new JDialog(this,Write,true);
JDialog dlg_list = new JDialog(this,List,true);
String title;
String writer;
String pass;
String contant;
Container con_write;
Container con_list;
Container con_board;
Vector vc = new Vector();
//start of boar_form
JButton board_jbt_view = new JButton(리스트 보기);
JButton board_jbt_write = new JButton(글쓰기);
//end of boar_form
//start of write_form
JLabel write_jla_writer = new JLabel(작성자);
JLabel write_jla_title = new JLabel(제목);
JLabel write_jla_pass = new JLabel(비밀번호);
JTextField write_jtf_writer = new JTextField(20);
JTextField write_jtf_title = new JTextField(20);
JTextField write_jtf_pass = new JTextField(20);
JTextArea write_jta_contant = new JTextArea(10,30);
JScrollPane write_jsp_contant = new JScrollPane(write_jta_contant);
JButton write_jbt_save = new JButton(저장);
JButton write_jbt_can = new JButton(취소);
//end of write_form
//===============================================
//start of list_form
JList list_jl_list = new JList(vc);
JLabel list_la_list = new JLabel(리스트목록,JLabel.CENTER);
JButton list_jbt_view = new JButton(선택항목 보기);
JButton list_jbt_close = new JButton(닫기);
//end of list_form
public r757_2()
{
this.setTitle(Board);
this.init();
this.start();
this.pack();
this.setVisible(true);
}
public r757_2(String writer, String title, String pass, String contant)
{
this.writer = writer;
this.title = title;
this.pass = pass;
this.contant = contant;
//list_jl_list.add(vc.size()+1+write_jtf_title.getText().trim());
//list_jl_list.add(write_jtf_title.getText().trim());
//list_jl_list.setListData(vc);
//r757_2 rr = (r757_2)vc.elementAt(vc.size());
//list_jl_list.add(rr.gettitle());
//list_jl_list.setListData( (r757_2)vc.elementAt(vc.size()) );
view(0);//테스트 위해서}
//입력한 값들을 콘솔로 출
public void view(int iii)
{
r757_2 rs = (r757_2)vc.elementAt(iii);
System.out.println(title: +rs.gettitle());}
public void settitle(String title)
{
this.title = title;
}
public String gettitle()
{
return this.title;
}
public void setwriter(String writer)
{
this.writer = writer;
}
public String getwriter()
{
return this.writer;
}
public void setpass(String pass)
{
this.pass = pass;
}
public String getpass()
{
return this.pass;
}
public void setcontant(String contant)
{
this.contant = contant;
}
public String getcontant()
{
return this.contant;
}
public void init()
{
write_jbt_save.setEnabled(false);
//write_jbt_can.setEnabled(false);
con_board = this.getContentPane();
con_board.setLayout(new FlowLayout());
con_board.add(board_jbt_view);
con_board.add(board_jbt_write);
//con_board.setSize(300,800);
//con_board.setVisibletVisible(true);
con_write = dlg_write.getContentPane();
con_write.setLayout(new BorderLayout());
JPanel jp_write1 = new JPanel(new BorderLayout());
JPanel jp_write2 = new JPanel(new GridLayout(3,1,2,2));
jp_write2.add(write_jla_writer);
jp_write2.add(write_jla_title);
jp_write2.add(write_jla_pass);
JPanel jp_write3 = new JPanel(new GridLayout(3,1,2,2));
jp_write3.add(write_jtf_writer);
jp_write3.add(write_jtf_title);
jp_write3.add(write_jtf_pass);
jp_write1.setBorder(new TitledBorder(new BevelBorder(BevelBorder.RAISED),기본정보));
jp_write1.add(West,jp_write2);
jp_write1.add(Center,jp_write3);
//write_jta_contant.setBorder(new TitledBorder(new BevelBorder(BevelBorder.RAISED),내용작성) );
JPanel jp_write4 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
jp_write4.add(write_jbt_save);
jp_write4.add(write_jbt_can);
write_jbt_save.setBorder(new BevelBorder(BevelBorder.RAISED));
write_jbt_can.setBorder(new BevelBorder(BevelBorder.RAISED));
//dlgjp1.setBorder(new TitledBorder(new BevelBorder(BevelBorder.RAISED), 기본정보));
JPanel jp_write6 = new JPanel(new GridLayout(1,1,3,3));
jp_write6.add(write_jta_contant);
jp_write6.setBorder(new TitledBorder(new BevelBorder(BevelBorder.RAISED),내용작성) );con_write.add(North,jp_write1);
//con_write.add(Center,write_jta_contant);
con_write.add(Center,jp_write6);
con_write.add(South,jp_write4);con_write.setSize(400,700);
con_write.setVisible(true);
dlg_write.pack();
//dlg_write.setVisible(true);
con_write.setVisible(true);
//write_form===========================================================================================
con_list = dlg_list.getContentPane();
con_list.setLayout(new BorderLayout());
list_jl_list = new JList();
list_jl_list.setListData(vc);JPanel jp_list1 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
jp_list1.add(list_jbt_view);
jp_list1.add(list_jbt_close);
con_list.add(North,list_la_list);
con_list.add(Center,list_jl_list);
con_list.add(South,jp_list1);
}//end of init
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == board_jbt_write)
{
dlg_write.setVisible(true);
}//end of board_jbt_view
else if(e.getSource() == write_jbt_can)
{
write_jtf_writer.setText();
write_jtf_title.setText();
write_jtf_pass.setText();
write_jta_contant.setText();
write_jtf_writer.requestFocus();
}//end of write_jbt_can
else if(e.getSource() == write_jbt_save)
{String w = write_jtf_writer.getText().trim();
String t = write_jtf_title.getText().trim();
String p = write_jtf_pass.getText().trim();
String c = write_jta_contant.getText().trim();
r757_2 rr = new r757_2(w,t,p,c);
vc.addElement(rr);
}//end of write_jbt_save
else if(e.getSource() == board_jbt_view)
{
dlg_list.setSize(300,200);
dlg_list.setVisible(true);
}
}
public void start()
{
board_jbt_view.addActionListener(this);
board_jbt_write.addActionListener(this);
write_jbt_can.addActionListener(this);
write_jbt_save.addActionListener(this);
write_jtf_writer.addKeyListener(this);
write_jtf_title.addKeyListener(this);
write_jtf_pass.addKeyListener(this);
write_jta_contant.addKeyListener(this);
}//end of start
public void keyTyped(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
if(e.getSource() == write_jtf_writer)
{
if(write_jtf_writer.getText().trim().length() != 0 &&
write_jtf_title.getText().trim().length() != 0 &&
write_jtf_pass.getText().trim().length() != 0 &&
write_jta_contant.getText().trim().length() !=0)
{
write_jbt_save.setEnabled(true);
return;
}
else
{
{
write_jbt_save.setEnabled(false);
return;
}
}
}//end of write_jtf_writer
else if(e.getSource() == write_jtf_title)
{
if(write_jtf_writer.getText().trim().length() == 0)
{
write_jtf_writer.requestFocus();
return;
}
else if(write_jtf_writer.getText().trim().length() != 0 &&
write_jtf_title.getText().trim().length() != 0 &&
write_jtf_pass.getText().trim().length() != 0 &&
write_jta_contant.getTant.getText().trim().length() !=0)
{
write_jbt_save.setEnabled(true);
return;
}
else
{
{
write_jbt_save.setEnabled(false);
return;
}
}}//end of write_jtf_titleelse if(e.getSource() == write_jtf_pass)
{
if(write_jtf_writer.getText().trim().length() != 0 &&
write_jtf_title.getText().trim().length() != 0 &&
write_jtf_pass.getText().trim().length() != 0 &&
write_jta_contant.getText().trim().length() !=0)
{
write_jbt_save.setEnabled(true);
return;
}
else
{
{
write_jbt_save.setEnabled(false);
return;
}
}}//end of write_jtf_passelse if(e.getSource() == write_jta_contant)
{
if(write_jtf_writer.getText().trim().length() != 0 &&
write_jtf_title.getText().trim().length() != 0 &&
write_jtf_pass.getText().trim().length() != 0 &&
write_jta_contant.getText().trim().length() !=0)
{
write_jbt_save.setEnabled(true);
return;
}
else
{
{
write_jbt_save.setEnabled(false);
return;
}
}
}//end of write_jta_contant
}
public void keyPressed(KeyEvent e)
{
}
public static void main(String args[])
{
r757_2 r = new r757_2();
}//end of main
}//end of class
-
클라우드
우선 답변을 먼저 드리자면...
1. view 호출시 vc에는 아무값이 들어있지 않습니다.
2. add에 잘못된 인자의 값을 넣어주었습니다.
제가 틀릴 수도 있지만 api를 찾아보니 맞는거 같아서 이렇게 답부터 적습니다^^;
한번 찾아보시고 정 안되겠다면 말씀하세요, 원하신다면 어디서 잘못됐는지 가르쳐 드리겠습니다.
단, 지금 이런 상황은 버퍼링님의 광렙(?)의 기회일 것입니다. 급한경우에만 정답을 요청해주세요...^^;
그럼 좋은하루되세요 -
쇼코홀릭
view호출시 vc에는 하나의 값이 들어가 있지 않나요?
값을 넘겨주고 바로 view를 호출햇기 때문에 그렇게 생각합니다.
add라는 메소드는 여러가지 인자가 잇든데 그중에 string 형도 있던데~
혹시 javax랑은 서로 다른가요? -
흰가람
add라는 메소드 스펙을 한번 찾아보시고 어떤 자료형이 들어가야 하는지
또 add 안에 그에 맞는 자료형을 넣으려고 했는지도 알아보세요~ -
말글
view() 호출시 vc의 상태가 어떨지 생각해보세요...
첫번째 값(index:0)을 보려고 할때 오류가 출력되면 과연 어떤문제 일까요?