2008년 8월 29일 금요일

자바 JComboBox




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 을 가져오고싶습니다...
*/

자바 마방진





public class Mabangjin
{
public static void main(String args[])
{
//배열을 6으로 만드세요
//님이 사용한 로직은 5를 사용했는데
//그러면 0,1,2,3,4 이런식으로 첨자가 사용 되어야합니다.
//하지만 이 프로그램에서는 5까지 사용하니 6으로 해야
//에러가 발생하지 않습니다.
//의문점 쪽지 주세요
int a[][] = new int[6][6];
int i=1;
int j=(5/2)+1;

for(int k=1;k<=25;k++)
{
System.out.println("i="+i+"j="+j);
a[i][j]=k;
if(k%5==0)
{
i=i+1;
}
else
{
i=i-1;
j=j+1;
}

if(i<1)
{
i=5;
}
else if(j>5)
{
j=1;
}

}
//여기도 수정 x y 값수정
for (int x = 1; x < 6; x++)
{
for (int y = 1; y< 6; y++)
{
//출력을 보기 좋게
System.out.printf("%3d",a[x][y]);
}
System.out.println();
}


}
}

//문]
//a[i][j]=k;에서 배열의 범위를 벗어났다고하네요
//제가 봤을때는 이상없는것 같은데 ㅜ.ㅜ
//고수님들 좀 봐주세요 실행화면도 같이 해주시면 좋고요
//부탁드립니다 밑에는 소스입니다

2008년 8월 28일 목요일

Google Android Developer Challenge I 최종 결과

Android Developer Challenge I 의 최종적인 결과는 지금 완료되었습니다.
결승전 출전자의 50 팀으로부터 10 팀이 $275,000 을 각각 받았고 10 팀은 $100,000 을 받았다.

... 원문 ...

이제 끝난 것 같군요.
휴~~~~

2008년 8월 23일 토요일

Applet implements ActionListener, Runnable





import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.Timer;

public class Main extends Applet implements ActionListener, Runnable {
Font f;
Image img;
Button btn_start;
Button btn_stop;
int col=10;
int row=10;
Random mole_random;
Thread thread;
//Timer timer1;

public void init(){

f= new Font("SansSerif", Font.TYPE1_FONT, 15);
//img = getImage(getDocumentBase(), "mogu4.png");
//저의 android.jpg로 사용 님그림으로 바꾸세요.
img = getImage(getDocumentBase(), "android.jpg");

btn_start = new Button("시작");
btn_start.addActionListener(this);
add(btn_start);

btn_stop = new Button("중단");
btn_stop.addActionListener(this);
btn_stop.setEnabled(false);
add(btn_stop);
}

// 필요 없음
// public void start(){
// repaint();
// // timer1.start();
//
// }

public void run(){
// 가장 문제가 있는 부분 for를 사용하면 안됩니다.
// for(int i=0; i<100; i++)
// {
while(true){
mole_random = new Random();
col=mole_random.nextInt(370)+10;
row=mole_random.nextInt(470)+10;
//g.drawImage(img, col, row, this);
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
// }

}
//필요없음
// public void stop(){
// thread=null;
// }

public void paint(Graphics g){

g.drawRect(2, 2, 400, 500);
g.drawImage(img, col, row, this);
}

public void actionPerformed(ActionEvent e){

if(e.getSource()==btn_start){

btn_stop.setEnabled(true);

thread = new Thread(this);
thread.start();

repaint();

}
if(e.getSource()==btn_stop){
btn_start.setEnabled(true);
btn_stop.setEnabled(false);
//이부분 추가
thread.stop();
}


}

}
//문]
//버튼을 누르면 그림이 무작위로 나타나는 것이 목적인데, 다음과 같이 하면 버튼을 누를때 마다 한번씩만 실행됩니다. 도와주세여

2008년 8월 21일 목요일

google Android v0.9 OpenGL ES 동영상


전 버전과 별다른 변화가 없는 것 같습니다.


기분이 그런가 약간 부드러워진 것도 같고

2008년 8월 20일 수요일

google Android v0.9 SDK의 베타판 실행화면

여기서 다운받고

여기를 보면 보안상 GTalkService 을 삭제했다는데.
저의 프로그램은 대부분 이걸 사용하는데 걱정입니다.
GTalkService 이것 뿐만아니라
시작시 나오는 레드아이도 사라졌습니다.


Sorry ?


인터넷에서 한글지원이 되니 이건 좋은것 같고


전반적으로 속도도 많이 좋아진 것 같고
화면의 그림도 귀엽고 예쁘다고 생각합니다.


google 님 GTalkService 이거 다시 넣어주세요.

2008년 8월 18일 월요일

google Android SDK의 베타판 release

나는 오늘, 꽤 행복합니다.
내가 누구라도 우리가 베타 SDK를 공표하고 있는 것을 알리게 되므로, 당신은 Android Developers의 Site로 새로운 Android에 대해 0.9의 SDK 베타를 읽을 수 있습니다, 혹은, 당신이 비트에 똑바로 되고 싶다면, 당신은 다운로드 페이지를 방문할 수 있습니다. 일단 당신이 그것을 가진다면, 당신이 질문을 한다면, 반드시 우리의 Developer Forum를 방문하도록 해 주세요.

원문 여기를 참고하세요..

걱정이네.. 또 연구해야하니....

JTable setPreferredWidth 각 컬럼 너비조절 질문이요




import java.util.Vector;
import javax.swing.*;
import javax.swing.table.*;
class table_test extends JFrame{
private DefaultTableModel dtm;
private JTable jt = new JTable();
private JScrollPane jsp = new JScrollPane(jt);
public table_test(){
this.init();
this.setSize(300, 200);
this.setVisible(true);
}
public void init(){


this.getContentPane().add("Center", jsp);

Vector attribute = new Vector(); // 한 행에 입력될 속성
attribute.addElement("김씨");
attribute.addElement("서울대학교");
Vector data = new Vector(); // 이름과 소속 속성을 가지는 하나의 행 벡터
data.add(attribute);

Vector header = new Vector();
header.add("이름");
header.add("소속");

dtm = new DefaultTableModel(data, header);
jt.setModel(dtm);
// System.out.println(jt.getColumnModel().getTotalColumnWidth()); // 기본값 75+75 = 150
// jt.getColumnModel().getColumn(0).setWidth(100);
// jt.getColumnModel().getColumn(1).setWidth(200);
// System.out.println(jt.getColumnModel().getTotalColumnWidth()); // 변경값 100+200 = 300
//setWidth 의 영문 번역 입니다.
//This method should not be used to set the widths of columns in the JTable, use setPreferredWidth instead.
//이 method 은 칼럼의 폭을 JTable로 세트 하는데 이용되어서는 안됩니다. 그리고, 그 대신에 setPreferredWidth 이 사용이 됩니다

jt.getColumnModel().getColumn(0).setPreferredWidth(100);
jt.getColumnModel().getColumn(1).setPreferredWidth(200);
// jt.getColumnModel().getColumn(0).setMinWidth(width);
// jt.getColumnModel().getColumn(0).setMaxWidth(width);
//jt.repaint(); // 보여지는 테이블의 컬럼길이는 그대로인게 문제
}

}
public class tableTest{
public static void main(String[] ar){
new table_test();
}
}


//문]
//사정상 TableColumn으로 설정하는 법을 쓰지않고, 아래와 같이 테이블에서 get 하는 방식으로 접근을 해서 셋팅을 하려고 하는데 잘 되지가 않습니다.
//커맨드 출력상으로는 분명 논리적으로 총 너비를 합한값이 변해져있는데 정작 보여지는 테이블의 총 너비는 전혀 변하지 않은게 난감하네요.....;;
//조언 부탁드립니다.

2008년 8월 13일 수요일

java StringTokenizer




import java.util.*;

public class ShowParse{
public static void main(String args[]){
ShowParse sp=new ShowParse();
StringTokenizer st= new StringTokenizer("하하하=호호호-히히히=낄낄낄","-");
//여기에 while문 추가하세요.
while(st.hasMoreTokens()){
StringTokenizer st1= new StringTokenizer(st.nextToken(),"=");
while(st1.hasMoreTokens())
System.out.println(st1.nextToken());
}
}

}

/*문]

하하하
호호호 는 찍히는데


하하하

호호호

히히히

낄낄낄

이라고 찍고 싶어요~

*/

2008년 8월 12일 화요일

java 24시간제를 12시간제로 바꾸기




public class MilitaryTime{
public static void main(String[] args){
int Time1 = 900;
int Time2 = 1730;
ampm(Time1);
ampm(Time2);
// System.out.println(Time1);
// System.out.println(Time2);
}

private static void ampm(int t) {
// TODO Auto-generated method stub
//두개를 처리하기위해 함수로 만들었습니다.
int minute = 0;
int hour = 0;
String time = null;
//시간을 문자열로 만들고
time = Integer.toString(t);
//만약 3자리숫자면 4자리로 만들고 이유는 계산하기 편하게
if(time.length()<4) time="0"+time;
//문자열 앞2자리를 시간으로 만들고
hour = Integer.parseInt(time.substring(0, 2));
//문자열 뒤2자리를 분으로 만들고
minute = Integer.parseInt(time.substring(2, 4));
//만약 오후이면 12를 감산한면 됩니다.
//의문점 쪽지주세요
if(hour> 12 && hour<=24){
hour = hour - 12;
System.out.println("Time is "+ hour + ":" + minute +"pm");
}
else{
System.out.println("Time is "+ hour + ":" + minute +"am");
}
}
}

//문]
//자바초보입니다..ㅡㅡ.;
//24시간제를 12시간제로 바꾸고 싶은데 잘안되는군요..
//예를들어 0900시면 9am으로...1730이면 5:30pm으로 출력하고 싶은데 ..
//소스수정부탁드립니다...-ㅁ-

java BufferedWriter




import java.awt.*;
import java.io.*;
import java.awt.event.*;

import javax.swing.*;

class B extends JPanel implements ActionListener{
//수정한부분
private JButton bt;
private JButton bt2;
private JButton bt3;
private JButton bt4;
private JTextField tf1;
private TextArea text;
private JTextField tf;

public B(){

setLayout(null);

JLabel lb1 = new JLabel("제목");
lb1.setBounds(10,20,30,25);
add(lb1);

tf = new JTextField();
tf.setBounds(40,20,200,25);
add(tf);

JLabel lb2 = new JLabel("날짜");
lb2.setBounds(10,50,30,25);
add(lb2);

tf1 = new JTextField();
tf1.setBounds(40,50,200,25);
add(tf1);

text = new TextArea();
text.setBounds(10,80,350,500);
add(text);

bt = new JButton("새파일");
bt.setBounds(10,620,60,30);

add(bt);

bt2 = new JButton("열기");
bt2.setBounds(70,620,60,30);
add(bt2);

bt3 = new JButton("저장");
bt3.setBounds(130,620,60,30);
add(bt3);

bt4 = new JButton("닫기");
bt4.setBounds(190,620,60,30);
add(bt4);

tf1.addActionListener(this);
tf.addActionListener(this);
bt.addActionListener(this);
bt2.addActionListener(this);
bt3.addActionListener(this);
bt4.addActionListener(this);

}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// bt3이 저장버튼
// 저장 버튼을 클릭하면
//save함수를 호출합니다.
if (e.getSource() == bt3) {
String title = tf.getText();
String author = text.getText();
if (title == null
|| author == null
|| title.trim().length() == 0
|| author.trim().length() == 0) {
return;
}else{
//여기서 저장하는 함수호출
save();

}

}
}

private void save() {
// TODO Auto-generated method stub

BufferedWriter out;
try {
//c:/out.txt 파일이름으로 저장
//이부분을 연구하시면 됩니다.
out = new BufferedWriter(new FileWriter("c:/out.txt"));
//제목 저장
out.write(tf.getText()); out.newLine();
//날짜 저장
out.write(tf1.getText()); out.newLine();
//내용 저장
//의문점 쪽지주세요.
out.write(text.getText()); out.newLine();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class BB{
public static void main(String[] args){
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(new B());
f.setSize(400,700);
f.setVisible(true);
f.setTitle("일기장");
}
}

//문]
//안녕하세요.
//자바와 한참 씨름중인 프로그래머 지망생입니다 ㅠㅠ
//일기장을 만들어 볼려구 하는데요...
//저장하는거 정말 어렵네요 ㅠㅠ
//API는 볼줄도 모르겠고....
//책과제에서 소스약간 퍼와서 하는중인데 도무지 해답을 찾을수가 업습니다.
//수정좀 부탁드립니다
//고수님들 굽신굽신~~~
//저장만 할수 있게 수정좀 해주세요 굽신굽신

java JInternalFrame





import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class A02 extends JFrame{

JInternalFrame inframe;
JLabel l;
ImageIcon icon;
// 여기 수정
final JDesktopPane desktop;
public A02(){
super("A02 ");
JMenuBar bar = new JMenuBar();
setJMenuBar(bar);
JMenu addMenu = new JMenu("추가");
JMenuItem newInFrame = new JMenuItem("내부프레임추가");
addMenu.add(newInFrame);
bar.add(addMenu);
desktop = new JDesktopPane();
getContentPane().add(desktop,BorderLayout.CENTER);
//이부분 추가
addFrame();
newInFrame.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){


}
}
);

setSize(300,200);
setVisible(true);
}
//여기도 추가
private void addFrame() {
// TODO Auto-generated method stub
inframe = new JInternalFrame("내부프레임",true,true,true);
icon = new ImageIcon("c:/android.jpg");
l = new JLabel(icon);
inframe.getContentPane().add(l,BorderLayout.CENTER);
inframe.setSize(200,100);
inframe.show();
desktop.add(inframe);
}
public static void main(String [] args){
A02 jinter = new A02();
jinter.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}

2008년 8월 10일 일요일

Java 매개변수 전달 방식 (Call by Value, Call by Reference)


class problem
{
 int a[]=new int[1];
 int b[]=new int[1];
 static int c[]=new int[1];

 public problem(){
  plus(a);
  plus(b);
  plus(c);
  System.out.println(a[0]+" "+b[0]+" "+c[0]);

 }

 public void plus(int x[]){
  x[0]++;
 }
}

class test
{
 public static void main(String[] args)
 {
  new problem();
 }
}
//답]
// 이 문제의 답을 얻으시려면 님의 생각을 조금 바꾸셔야합니다.
// 언어는 여러 매개변수 전달기법들이 있습니다.
// c 언어일경우 전달기법을 문법으로 프로그램머가 제어가능하지만 
//자바의 경우 자료형에 따라 자동으로 매개변수 전달방식이 결정 됩니다. 
//님의 경우 배열로 해야 Call by Reference 기법이 구현됩니다.

// Call by value : 매개변수의 값을 복사해서 넘겨주는 방식
// Call by reference : 매개변수의 주소값을 넘겨주는 방식

//문]
//사실 실제 작업중인 코드는 아래것이 아니라 좀 더 복잡한건데 
//문제현상을 아래처럼 간단하게 만들어봤습니다.
//제한조건은 다음과 같습니다.
//1. plus()라는 함수가 static int 인자를 받을때도 있고 그냥 
//int 인자를 받을때도 있습니다.
//2. plus() 함수는 void형이어야만 합니다.
//3. plus() 함수 외의 다른 소스부분을 수정해서는 안되고, 
//오로지 plus함수내에서 처리해야만 하는 상황입니다. 
//변경이 아닌 추가메소드같은건 구현가능함..
//4. x=this.a;  x=this.b; x=this.c 이렇게 코딩하면 안됩니다.
// 클래스필드의 투명성이 보장되어 직접 plus가 
//접근할 수 없는 상황입니다;;
//어찌저찌하다보니까 제한조건이 
//저렇게밖에 할 수 없는 상황이네요ㅡㅡ

2008년 8월 9일 토요일

java 버튼 만들었는데 보이지가 않아요




import java.awt.*;
import java.awt.event.*;

import javax.swing.JFrame;

public class A01 extends JFrame implements WindowListener
{

public static void main(String[] args)//창생성
{
A01 f = new A01();

f.setSize(300,300);
f.setVisible(true);


}

//버튼
Button btn1, btn2, btn3;
public void init()
{

btn1 = new Button("버튼1");
btn1.setBounds(10,10,100,20);
add(btn1);


}

public A01()//캠버스 생성
{
//여기에 init()를 추가하세요
//의문점 쪽지주세요
init();
MyCanvas mc = new MyCanvas();
add("Center", mc);
addWindowListener(this);

}

/*class paint2
{
MyCanvas2 mc2 = new MyCanvas2();
add("Center", mc2);
}

class MyCanvas2 extends Canvas//이미지출력캔버스
{
public void paint(Graphics g)
{
Toolkit myToolkit2 = Toolkit.getDefaultToolkit();
Image myImage = myToolkit2.getImage("c:kaka.jpg");
g.drawImage(myImage , 0, 0, this);

}
}*/

class MyCanvas extends Canvas//이미지출력캔버스
{
public void paint(Graphics g)
{
Toolkit myToolkit = Toolkit.getDefaultToolkit();
Image myImage = myToolkit.getImage("c:/android.jpg");
g.drawImage(myImage , 0, 0,300,300, this);

}
}

public void windowOpened(WindowEvent e) {}//윈도우리스너
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}


}

//문]
//버튼 만들었는데 보이지가 않아요

2008년 8월 8일 금요일

java DefaultTreeCellRenderer test




import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;

public class TreeTest extends JFrame {
JPanel jPanel1 = new JPanel();
JTree tree;
BorderLayout borderLayout1 = new BorderLayout();
Icon openNode = new ImageIcon("C:/i1.jpg");
Icon online = new ImageIcon("c:/i2.jpg");
Icon closeNode = new ImageIcon("c:/i3.jpg");
public TreeTest() {
try {
Init();
tree.setRootVisible(true);
}
catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
TreeTest test = new TreeTest();
test.setSize(300, 500);
test.setVisible(true);
}

private void Init() throws Exception {
String rsmd1[]={"일지매","홍길동","android","경품","로또"};
String name=null;
DefaultMutableTreeNode parent = new DefaultMutableTreeNode("친구", true);
//확인방법 여기서
for(int i=0;i<=4;i++){
name=rsmd1[i];//배열에서 문자열 가져오고

DefaultMutableTreeNode DbData = new DefaultMutableTreeNode(name);
parent.add(DbData);
}
// 여기까지 주석 하고 실행하고 하지 않고 실행 해보시면 됩니다.

tree = new JTree(parent);

jPanel1.setLayout(borderLayout1);
this.getContentPane().add(jPanel1, BorderLayout.CENTER);
jPanel1.add(tree, BorderLayout.CENTER);

tree.setCellRenderer(new MyRenderer());
}
class MyRenderer extends DefaultTreeCellRenderer
{
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)
{


super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
if (expanded)//그룹 열렸을때 아이콘
{
setIcon(openNode);
}
else if(!expanded && leaf) //그룹이 열리지않고 리프노드일때(즉 친구아이콘)
{
//여기 if문은 사용자가 프로그램하기 나름이므로 참고하세요
// 저의 경우는 친구그룹인가를 확인하고 아이콘을 제어합니다.
// 의문점 쪽지주세요.
if(value.toString().equals("친구"))setIcon(closeNode);
else setIcon(online);
}
else if(!expanded)//그룹이 닫혔을때
{
setIcon(closeNode);
}
return this;
}
}

}

//문]
//그룹추가를 했을때 닫힌그룹모양이 아니고 친구가 없어서 리프노드 처리가 되서 친구 아이콘으로 되버리는군요..;; 어떻게 해야 자식이 없는 그룹노드에 그룹아이콘 모양을 줄수 있나요?

자바 그림 불러오기




import java.awt.Canvas;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class A01 extends Frame implements WindowListener
{
public static void main(String[] args)
{
A01 f = new A01();
f.setSize(600,400);
f.setVisible(true);
}

public A01()
{
MyCanvas mc = new MyCanvas();
add("Center", mc);

addWindowListener(this);
}

class MyCanvas extends Canvas//이미지출력캔버스
{
public void paint(Graphics g)
{
Toolkit myToolkit = Toolkit.getDefaultToolkit();
// 경로 지정하시면 됩니다. "c:/android.jpg" 이런식으로요.
//의문점 쪽지 주세여.
Image myImage = myToolkit.getImage("c:/android.jpg");
g.drawImage(myImage , 0, 0, this);

}
}

public void windowOpened(WindowEvent e) {}
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}

}

-


Sidewinder


World


FishMusic


LaughingBaby