1
자바 스윙을 이해하기 시작했습니다. 이벤트 처리를 이해할 수있는 코드를 빠르게 작성하고 다음 코드를 작성했습니다. 이벤트 처리가 "내부 mouseclicked 메서드"로 괜찮 았던 것을 볼 수 있듯이! 메시지가 콘솔에 인쇄되었지만 프레임에 추가 된 레이블을 볼 수 없습니다.이 경우 레이블은 텍스트 상자에 입력 한 것과 같습니다. 입력 한 문자열은 구석을 당겨서 프레임의 크기를 조정할 때까지 표시되지 않습니다. ! 이것은 초보자로서 나를 조금 이상하게 만든다. 누군가 일어날 일을 설명해 주시겠습니까? 당신이 볼 GUI에 구성 요소를 추가 할 때자바 스윙 학습 : 프레임 다시 그리기/새로 고침 이해하기
이package com.learning.java.gui;
import java.awt.FlowLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.event.MouseInputListener;
public class FirstGUIFrame extends JFrame{
private static FirstGUIFrame firstgui=null;
FirstGUIFrame(){
setLayout(new FlowLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
setSize(600,400);
}
public static FirstGUIFrame getFrameObj(){
return firstgui;
}
public static void main(String ar[]){
firstgui = new FirstGUIFrame();
JLabel name = new JLabel("UserName:");
TextField textfield = new TextField("enter you name here", 15);
JButton jbutton = new JButton("Enter");
jbutton.addMouseListener(new buttonListener());
firstgui.add(name);
firstgui.add(textfield);
firstgui.getContentPane().add(jbutton);
}
}
class buttonListener implements MouseInputListener{
@Override
public void mouseClicked(MouseEvent e) {
FirstGUIFrame frame = FirstGUIFrame.getFrameObj();
System.out.println("inside mouseclicked method!");
frame.getContentPane().add(new JLabel("Clicked!!"));
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
}