±Û¾´ÀÌ :±Ç¿µÁØ 1999³â 3¿ù 13ÀÏ 09:28:46
¾È³çÇϼ¼¿ä.
½ºÀ®À» °øºÎÇϴµ¥ swing1.1 À» ´Ù¿îÀ޾Ƽ ¼³Ä¡ Çߴµ¥,
¾ÐÃà¿ï Ǫ´Ï±î, swing-1.1µð·ºÅ丮¹Ø¿¡ swing.jar ¿Í
swingall.jar µîµîÀÌ »ý±â´Âµ¥, À̵ð·ºÅ丮 ÀÚü¸¦ jdk1.1.7B\lib\swing-1.1\
ÀÌ·±½ÄÀ¸·ÎµÎ°í, classpathµµ ±×·¸°Ô Àâ¾Ò½À´Ï´Ù.
¸Â°Ô ÀâÀº°Ì´Ï±î...
±×¸®°í Á¦°¡ jdk 1.1.7 À» »ç¿ëÇϴµ¥, swingÀ» µû·Î À¥¿¡¼ ¹Þ¾Æ¼
À§Ã³·³ Àâ¾ÆÁÖ´Â°Ô ¸Â´Â°Ç°¡¿ä.''
½ºÀ® Æ©Å丮¾óÀ» ´Ù¿î ¹Þ¾Æ¼ ±× ¿¹Á¦¸¦ Çѹø ½ÇÇà½ÃÄÑ ºÃ´Âµ¥,
¿¡¶ó°¡ ³ª¼ classpath¹®Á¦ÀÎÁö, ¾Æ´Ï¸é, ÄÚµåÀÚü¹®Á¦ÀÎÁö..
¿¡·¯¸Þ¼¼Áö¸¦ ºÁ¼´Â ÄÚµåÀÚü¹®Á¦°¡ ¾Æ´Ñ°Í °°Àºµ¥...
´ÙÀ½Àº º»¹®°ú ¿¡·¯ ¸Þ¼¼ÁöÀÔ´Ï´Ù. kawa¿¡¼ ÄÄÆÄÀÏ Çß½À´Ï´Ù.
µµ½º¿¡¼ javac...Çصµ ¹°·Ð ¸¶Âù°¡ÁöÀÔ´Ï´Ù.
import com.sun.java.swing.*;
import java.awt.*;
import java.awt.event.*;
public class GlassPaneDemo {
static private MyGlassPane myGlassPane;
public static void main(String[] args) {
JFrame frame = new JFrame("GlassPaneDemo");
JRadioButton changeButton =
new JRadioButton("Glass pane \"visible\"");
changeButton.setSelected(false);
changeButton.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
myGlassPane.setVisible(e.getStateChange()
== ItemEvent.SELECTED);
}
});
myGlassPane = new MyGlassPane(changeButton);
frame.setGlassPane(myGlassPane);
Container contentPane = frame.getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(changeButton);
contentPane.add(new JButton("Button 1"));
contentPane.add(new JButton("Button 2"));
frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
/**
* We have to provide our own glass pane so that it can paint.
*/
class MyGlassPane extends JComponent {
Point point = null;
public void paint(Graphics g) {
if (point != null) {
g.setColor(Color.red);
g.fillOval(point.x - 10, point.y - 10, 20, 20);
}
}
public void setPoint(Point p) {
point = p;
}
public MyGlassPane(AbstractButton aButton) {
//XXX: The following don't work. Explain why.
//setForeground(Color.red);
//setBackground(Color.red);
RBListener listener = new RBListener(aButton, this);
addMouseListener(listener);
addMouseMotionListener(listener);
}
}
/**
* Listen for all events that our radio button is likely to be
* interested in. Redispatch them to the radio button.
* If this were a real app, we'd probably do something about
* key events.
*/
class RBListener extends MouseMotionAdapter
implements MouseListener {
Toolkit toolkit;
Component liveOne;
MyGlassPane glassPane;
boolean inButtonDrag = false;
public RBListener(Component live, MyGlassPane pane) {
toolkit = Toolkit.getDefaultToolkit();
liveOne = live;
glassPane = pane;
}
public void mouseMoved(MouseEvent e) {
redispatchMouseEvent(e, false);
}
/*
* We must forward at least the mouse drags that started
* with mouse presses over the radio button. Otherwise,
* when the user presses the radio button then drags off,
* the radio button isn't disarmed -- it keeps its dark
* gray background or whatever its L&F uses to indicate
* that the button is currently being pressed.
*/
public void mouseDragged(MouseEvent e) {
redispatchMouseEvent(e, false);
}
public void mouseClicked(MouseEvent e) {
redispatchMouseEvent(e, false);
}
public void mouseEntered(MouseEvent e) {
redispatchMouseEvent(e, false);
}
public void mouseExited(MouseEvent e) {
redispatchMouseEvent(e, false);
}
public void mousePressed(MouseEvent e) {
redispatchMouseEvent(e, false);
}
public void mouseReleased(MouseEvent e) {
redispatchMouseEvent(e, true);
inButtonDrag = false;
}
private void redispatchMouseEvent(MouseEvent e,
boolean repaint) {
Point panePoint = e.getPoint();
Point buttonPoint = SwingUtilities.convertPoint(
glassPane,
panePoint,
liveOne);
boolean inButton = liveOne.contains(buttonPoint);
int eventID = e.getID();
if (inButton && (eventID == MouseEvent.MOUSE_PRESSED)) {
inButtonDrag = true;
}
if (inButton || inButtonDrag) {
liveOne.dispatchEvent(new MouseEvent(liveOne,
eventID,
e.getWhen(),
e.getModifiers(),
buttonPoint.x,
buttonPoint.y,
e.getClickCount(),
e.isPopupTrigger()));
}
if (repaint) {
toolkit.beep();
glassPane.setPoint(panePoint);
glassPane.repaint();
}
}
}
¿¡·¹¸Þ¼¼Áö..
GlassPaneDemo.java:0:0:0:0:
Warning: "c:\jdk1.1.7B\lib\sing-1.1\swingall.jar" is either not a valid zip file or it contains a zip file comment. If it contains a comment, rezip it without the comment...
GlassPaneDemo.java:1:8:1:25:
Error: Could not find package named:
./com/sun/java/swing,
c:\jdk1.1.7B\lib\classes.zip(com/sun/java/swing),
c:\jdk1.1.7B\lib\swing-1.1\swing.jar(com/sun/java/swing),
c:\jdk1.2\jdbc-odbc\/com/sun/java/swing,
c:\jsdk2.0\lib\jsdk.jar(com/sun/java/swing),
c:\notes\JdbcSql\lib\JdbcDomino.jar(com/sun/java/swing),
c:\notes\JdbcSql\lib\notesjdbc.jar(com/sun/java/swing) or
C:\Program Files\Kawa\classes.zip(com/sun/java/swing)
GlassPaneDemo.java:9:9:9:14:
Error: Type JFrame was not found
GlassPaneDemo.java:9:24:9:50:
Error: No match was found for constructor "JFrame(java.lang.String)"
GlassPaneDemo.java:11:9:11:20:
Error: Type JRadioButton was not found
GlassPaneDemo.java:12:17:12:58:
Error: No match was found for constructor "JRadioButton(java.lang.String)"
GlassPaneDemo.java:16:17:17:61:
Error: No match was found for method "setVisible(boolean)"
GlassPaneDemo.java:21:23:21:51:
Error: No match was found for constructor "MyGlassPane(JRadioButton)"
GlassPaneDemo.java:26:9:26:37:
Error: No match was found for method "add(JRadioButton)"
GlassPaneDemo.java:27:9:27:48:
Error: No match was found for method "add(JButton)"
GlassPaneDemo.java:27:25:27:47:
Error: No match was found for constructor "JButton(java.lang.String)"
GlassPaneDemo.java:27:29:27:35:
Error: Type JButton was not found
GlassPaneDemo.java:28:9:28:48:
Error: No match was found for method "add(JButton)"
GlassPaneDemo.java:28:25:28:47:
Error: No match was found for constructor "JButton(java.lang.String)"
GlassPaneDemo.java:44:27:44:36:
Error: Type JComponent was not found
GlassPaneDemo.java:58:24:58:37:
Error: Type AbstractButton was not found
GlassPaneDemo.java:63:31:63:59:
Error: No match was found for constructor "RBListener(AbstractButton, MyGlassPane)"
GlassPaneDemo.java:64:9:64:34:
Error: No match was found for method "addMouseListener(RBListener)"
GlassPaneDemo.java:65:9:65:40:
Error: No match was found for method "addMouseMotionListener(RBListener)"
GlassPaneDemo.java:128:29:128:42:
Error: "SwingUtilities" is either a misplaced package name or a non-existent entity.
GlassPaneDemo.java:154:13:154:31:
Error: No match was found for method "repaint()"