import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class GraphicTest extends JFrame implements ActionListener {
JLabel x1L, y1L, x2L, y2L, z1L, z2L;
JTextField x1T, y1T, x2T,y2T,z1T,z2T;
JCheckBox fill;
JRadioButton line, circle, rect, rectR, arc; // 선 원 사각형 둥근사각형 호
JButton draw; // 2개의 패널 생성 위,아래
DrCanvas can;
JComboBox combo;
////////////////////////////////////
//color 추가하세요
Color Color;
public GraphicTest(){
x1L = new JLabel("x1");
y1L = new JLabel("y1");
x2L = new JLabel("x2");
y2L = new JLabel("y2");
z1L = new JLabel("z1");
z2L = new JLabel("z2");
x1T = new JTextField("100",3);
y1T = new JTextField("50",3);
x2T = new JTextField("150",3);
y2T = new JTextField("130",3);
z1T = new JTextField("50",3);
z2T = new JTextField("50",3);
line = new JRadioButton("선");
circle = new JRadioButton("원");
rect = new JRadioButton("사각형",true);
rectR = new JRadioButton("둥근사각형");
arc = new JRadioButton("호");
ButtonGroup bg = new ButtonGroup(); // RadioButton은 항상 그룹으로 묶어줘야된다.
bg.add(line);
bg.add(circle);
bg.add(rect);
bg.add(rectR);
bg.add(arc);
draw = new JButton("그리기");
can = new DrCanvas();
fill = new JCheckBox("채우기", true);
String[] color = {"빨강","파랑","노랑","초록","흰색"};
combo = new JComboBox(color);
JPanel p = new JPanel();
p.add(x1L);
p.add(x1T);
p.add(y1L);
p.add(y1T);
p.add(x2L);
p.add(x2T);
p.add(y2L);
p.add(y2T);
p.add(z1L);
p.add(z1T);
p.add(z2L);
p.add(z2T);
p.add(fill);
JPanel p2 = new JPanel();
p2.add(line);
p2.add(circle);
p2.add(rect);
p2.add(rectR);
p2.add(arc);
p2.add(combo);
p2.add(draw);
this.add("South",p2);
this.add("North",p);
this.add("Center",can);
setSize(600,300);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
//이벤트 처리
draw.addActionListener(this);
combo.addActionListener(this);
} // GraphicTest()
public void actionPerformed(ActionEvent e) {
////////////////////////////////////////////
// 이부분 추가하세요
if(e.getSource() == combo){
JComboBox cb = (JComboBox)e.getSource();
// cb.getSelectedIndex() 이것이 0,1,2.. 값을 리턴합니다.
// 의문점 쪽지주세요
switch (cb.getSelectedIndex()) {
case 0:
Color=Color.red;
break;
case 1:
Color=Color.blue;
break;
case 2:
Color=Color.yellow;
break;
case 3:
Color=Color.GREEN;
break;
case 4:
Color=Color.white;
}
}
can.repaint();
}// ActionEvent
class DrCanvas extends Canvas{
public DrCanvas(){
this.setBackground(new Color(140,60,80)); // 캔버스 색
this.setForeground(new Color(255,255,255)); // 도형 색상
} //DrCanvas()
public void paint(Graphics g){
//좌표 얻어오기
int x1 = Integer.parseInt(x1T.getText().trim());
int y1 = Integer.parseInt(y1T.getText().trim());
int x2 = Integer.parseInt(x2T.getText().trim());
int y2 = Integer.parseInt(y2T.getText().trim());
int z1 = Integer.parseInt(z1T.getText().trim());
int z2 = Integer.parseInt(z2T.getText().trim());
System.out.println();
System.out.println("그리기 시작" );
// 도형 그리자
if(fill.isSelected() ) { // 채우기 선택
/////////////////////////////////////////////
// 이부분 추가하세요
g.setColor(Color);
if( line.isSelected() )
g.drawLine(x1,y1,x2,y2);
else if( circle.isSelected() )
g.fillOval(x1,y1,x2,y2);
else if( rect.isSelected() )
g.fillRect(x1,y1,x2,y2);
else if( rectR.isSelected() )
g.fillRoundRect(x1,y1,x2,y2,z1,z2);
else if( arc.isSelected() )
g.fillArc(x1,y1,x2,y2,z1,z2);
} // if
else { // 채우기 해제
if(line.isSelected() ) {
g.drawLine(x1,y1,x2,y2);
} else if(circle.isSelected() ) {
g.drawOval(x1,y1,x2,y2);
} else if(rect.isSelected() ) {
g.drawRect(x1,y1,x2,y2);
} else if(rectR.isSelected() ) {
g.drawRoundRect(x1,y1,x2,y2,z1,z2);
} else if(arc.isSelected() ) {
g.drawArc(x1,y1,x2,y2,z1,z2);
}
} // else
} // paint()
} // DrCanvas()
public static void main(String[] args) {
new GraphicTest();
}
}
/*
문]
String[] color = {"빨강","파랑","노랑","초록","흰색"};
combo = new JComboBox(color);
이렇게 넣어놓으면 선택된 박스의 값을 어떻게 가져오나요...
System.out.println(combo) 라고 하니까 아주 긴 여러가지가
저기 빨강이 color[0] 이자나용 그럼 이 0 을 가져오고싶습니다...
*/
2008년 8월 29일 금요일
자바 JComboBox
피드 구독하기:
댓글 (Atom)
-
댓글 2개:
콤보박스에서 선택된 데이터 값을 가져오는 방법을 말씀하시는거 같은데요.
정석인지는 잘 모르겠지만 여러가지 방법이 있는거 같습니다.
1번째jComboBox.getSelectedItem.toString()
2번째
jComboBox.getItemAt(jComboBox.getSelectedIndex()).toString()
둘다 돌아가는건 똑같으리라 생각됩니다.
1번 내부로 돌아가면 2번과 같으리라 생각됩니다.
기본적으로 API로 제공되리라 생각햇는데 없는거 같더라구요..
문의사항 있으시면 http://pmguda.com
에 글 남겨주세요.^^ 즐프 하삼
댓글 쓰기