일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Server
- 데이터베이스
- Apache Solr
- 바안
- nft
- #Apache solr
- Klaythn
- vite
- 메일서버
- Drulal
- DMARC
- MYSQL
- Search Api
- Mail Server
- NFT Image Maker
- Infra
- Arcylic DNS Proxy
- NFT 이미지 메이커
- docker
- 개발환경
- 인프라
- Bin Log
- Laravel
- php
- 인ㄴ공지능
- 서버
- Solitity
- mariadb
- Drupal
- Drupal 7.x
- Today
- Total
J-한솔넷
간단한 이미지 뷰어 본문
학생들의 수업용으로 만든 프로그램입니다.
창의 크기를 조절할 때 이벤트가 발생하고 paint 함수를 호출 하는 것은 맞는데 update 함수는 호출 하지 않는 것 같다.
쩝....
파일의 내용은 아래와 같다.
import java.awt.*;
import java.awt.event.*;
class imgVier
{
public static void main(String[] args)
{
new ImageViewFrame();
}
}
class ImageViewFrame extends Frame implements ActionListener
{
MyPanel viewer;
Button btnOpen;
Image img;
TextField file;
String filename;
public ImageViewFrame() {
super( "이미지 뷰어" );
file = new TextField( 256 );
add( file, BorderLayout.NORTH );
viewer = new MyPanel();
add( viewer, BorderLayout.CENTER );
btnOpen = new Button( "열기" );
add( btnOpen, BorderLayout.SOUTH );
btnOpen.addActionListener( this );
setSize( 300, 300 );
setVisible( true );
addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
dispose();
System.exit( 0 );
}
}
);
addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
viewer.repaint();
}
}
);
}
public void actionPerformed( ActionEvent e ) {
FileDialog f = new FileDialog( this, "이미지 열기", FileDialog.LOAD );
String dir, name;
f.show();
dir = f.getDirectory();
name = f.getFile();
if( dir != null && name != null ) {
filename = dir + name;
file.setText( filename );
img = Toolkit.getDefaultToolkit().getImage( filename );
viewer.drawImage( img );
}
}
}
class MyPanel extends Panel {
Image img;
Image mem;
public void drawImage( Image img ) {
this.img = img;
repaint();
}
public void update( Graphics g ) {
int iwidth, iheight;
int width, height;
iwidth = iheight = 0;
width = getWidth();
height = getHeight();
try
{
do
{
iwidth = img.getWidth(null);
iheight = img.getHeight(null);
}
while (iwidth <= 0 || iheight <= 0 );
float r;
r = (float)width / iwidth;
iwidth *= r;
iheight *= r;
if( iheight > height ) {
r = (float)height / iheight;
iwidth *= r;
iheight *= r;
}
mem = createImage( width, height );
Graphics mg = mem.getGraphics();
mg.setColor( getBackground() );
mg.fillRect( 0, 0, width, height );
while( !mg.drawImage( img, 0, 0, iwidth, iheight, null ) );
}
catch ( Exception e) {}
paint( g );
}
public void paint( Graphics g ) {
try
{
g.drawImage( mem, 0, 0, this );
}
catch (Exception e) {}
}
}
'프로그래밍 > JAVA' 카테고리의 다른 글
폭탄 퍼즐 게임 (0) | 2012.10.31 |
---|---|
멀티쓰레드를 이용한 채팅 프로그램 (0) | 2012.10.20 |
JDBC와 MySQL을 이용한 데이터베이스 엑세스 (0) | 2012.10.20 |
자바 수업용 예제 및 파워포인트 (0) | 2012.07.18 |