微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这个文件的问题是每次我在 (JTextField)

如何解决这个文件的问题是每次我在 (JTextField)

这个文件的问题是每次我在 (JTextField) 中输入文本时屏幕都会下降。

首先,不会出现运行时编译错误

  1. 我们在登录类的 (JFrame) 内创建了 (JPanel)。 (MyCanvas) 类对象被放置在面板内。

  2. 它在屏幕上运行没有任何问题。 在 (JTextField) 中输入一个字符,屏幕就会下降。

  3. (paint,canvas) 我检查了代码是否有问题。 我试图对所有内容发表评论并对其进行测试,但它不起作用。

所以,我发现的是 (MyCanvas) 类...

添加(mc);在 MyCanvasmc = new MyCanvas();

我应该怎么做才能解决这个问题?

image1

image2

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.jpasswordfield;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;

public class AirlineLogin extends JFrame implements ActionListener{
Font titleFnt = new Font("휴먼편지체",Font.BOLD,32);
Font fnt = new Font("휴면편지체",14);
JPanel mainPane = new JPanel();
JPanel loginPane = new JPanel();
    JPanel topPane = new JPanel();
        JLabel loginTitle = new JLabel("비트항공 여행 일정 예약 프로그램");
    JPanel centerPane = new JPanel();
        //이미지
        ImageIcon icon = new ImageIcon("img/flights.png");
        Image im = icon.getimage();
        Image im2 = im.getScaledInstance(300,300,Image.SCALE_DEFAULT);
        ImageIcon icon2 = new ImageIcon(im2);
        JLabel lbl = new JLabel(icon2);
    JPanel southPane = new JPanel();
        JPanel southCenterPane = new JPanel();
        JPanel idPane = new JPanel();
            JLabel idLbl = new JLabel("USERNAME");
            JTextField idField = new JTextField(20);
        JPanel pwdPane = new JPanel();
            JLabel pwdLbl = new JLabel("PASSWORD");
            jpasswordfield pwdField = new jpasswordfield(20);
        JPanel btnPane = new JPanel();
            RoundedButton joinBtn = new RoundedButton("회원가입");
            RoundedButton loginBtn = new RoundedButton("로그인");

JPanel mainSouthPane = new JPanel();
    AirlineMain main = new AirlineMain();
    AirplaneMoving move = new AirplaneMoving();
public AirlineLogin() {
    //////////////////////////레이아웃////////////////////////
    add(mainPane);
    
    // 메인 패널 레이아웃 그리드백레이아웃 
    mainPane.setLayout(new GridBagLayout());
    
    //그리드백 제약사항을 정의
    GridBagConstraints gbc = new GridBagConstraints();
    
    // 전체를 그리드백레이웃으로 채운다
    gbc.fill = GridBagConstraints.BOTH;

    // 여백
    gbc.weightx=1.0;
    gbc.weighty=2.0;
    gbc.gridx=0;
    gbc.gridy=0;
    mainPane.add(move,gbc);
    
    // grid top
    gbc.weightx=1.0;
    gbc.weighty=1.0;
    gbc.gridx=0;
    gbc.gridy=1;
    mainPane.add(loginPane,gbc);
        loginPane.setLayout(new BorderLayout());
        loginPane.add(loginTitle);
        // 제목 폰트 설정
        loginTitle.setFont(titleFnt);
        loginTitle.setHorizontalAlignment(JLabel.CENTER);
        loginTitle.setVerticalAlignment(JLabel.BottOM);
        loginPane.setBackground(Color.white);

    // grid center
    gbc.weightx=1.0;
    gbc.weighty=2.0;
    gbc.gridx=0;
    gbc.gridy=2;
    mainPane.add(centerPane,gbc);
        centerPane.setLayout(new BorderLayout());
        centerPane.add(lbl);
        centerPane.setBackground(Color.white);
        
    
    //grid south
    gbc.weightx=1.0;
    gbc.weighty=1.0;
    gbc.gridx=0;
    gbc.gridy=3;
    mainPane.add(southPane,gbc);
        southCenterPane.setLayout(new GridLayout(3,1));
        // 아이디 패널
        southCenterPane.add(idPane);
            idPane.add(idLbl);
            idPane.add(idField);
            idPane.setFont(fnt);
            idPane.setBackground(Color.white);
        //패스워드 패널
        southCenterPane.add(pwdPane);
            pwdPane.add(pwdLbl);
            pwdPane.add(pwdField);
            pwdPane.setFont(fnt);
            pwdPane.setBackground(Color.white);
        // 회원가입 로그인 버튼 패널
        southCenterPane.add(btnPane);
            btnPane.add(joinBtn);
            btnPane.add(loginBtn);
            btnPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
            btnPane.setBackground(Color.white);
        southPane.add(southCenterPane);
        southPane.setBackground(Color.white);
        southCenterPane.setBackground(Color.white);
        
        
    
    //borderLayout south 세계시간
    add("South",mainSouthPane);
        mainSouthPane.setLayout(new FlowLayout(FlowLayout.LEFT));
        mainSouthPane.add(new JLabel("[ 한국 : "));
        mainSouthPane.add(main.koreaClock);
        mainSouthPane.add(new JLabel("],["));
        mainSouthPane.add(new JLabel("뉴욕 : "));
        mainSouthPane.add(main.newYorkClock);
        mainSouthPane.setBorder(new LineBorder(Color.black,1));
        mainSouthPane.add(new JLabel("]"));
    /////////////////////////////레이아웃 끝 ///////////////////////////////////
        
    
    
    // 전체화면
    setExtendedState(MAXIMIZED_BOTH);
    // 전체화면 풀릴경우 기본화면 크기

    setSize(1000,800);
    // 화면 보이기 여부
    setVisible(true);
    // 자원해제,끄기
    setDefaultCloSEOperation(disPOSE_ON_CLOSE);
    setDefaultCloSEOperation(EXIT_ON_CLOSE);
    // 타이틀
    setTitle("비트항공");
    setIconImage(im);
    // 이벤트
    joinBtn.addActionListener(this);
    loginBtn.addActionListener(this);
    // 키 이벤트 (로그인)
    pwdField.addKeyListener(new KeyAdapter() {
        public void keyreleased(KeyEvent e) {
            int key = e.getKeyCode();
            if(key==KeyEvent.VK_ENTER) {
                getLoginData();
            }
        }
    });
    //////////////무브 클래스 사이즈와 바정의////////
    move.setBackground(Color.white);
    move.getFrameSize();

    Thread t1 = new Thread(move);
    t1.start();
    /////////////////////////////////
}

public void actionPerformed(ActionEvent ae) {
    Object eventBtn = ae.getSource();
    if(eventBtn==joinBtn) {
        
    } else if(eventBtn==loginBtn) {
        getLoginData();
    }
}

public void getLoginData() {
    String id = idField.getText();
    String pwd = pwdField.getText();

    if(id.equals("")) {
        JOptionPane.showMessageDialog(this,"아이디를 입력하셔야 합니다");
    } else if(pwd.equals("")) {
        JOptionPane.showMessageDialog(this,"비밀번호를 입력하셔야 합니다.");
    } else {
        LoginDAO dao = new LoginDAO();
        int loginCheck = dao.getLogin(id,pwd);
        if(loginCheck == 0) JOptionPane.showMessageDialog(this,"아이디 또는 비밀번호가 틀렸습니다.");
        else if(loginCheck ==1 ) JOptionPane.showMessageDialog(this,"로그인에 성공하였습니다");
    }
}
}


import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.Random;

import javax.swing.JPanel;

public class AirplaneMoving extends JPanel implements Runnable{
MyCanvas mc;
Image airplane,cloud1,cloud2;
int airplaneX,airplaneY;
int change = 0;
Random ran = new Random();
int[][] r = new int[20][20];
Dimension frameSize,fullSize;
public AirplaneMoving() {
    airplane = Toolkit.getDefaultToolkit().getimage("img/airplane.png");
    cloud1 = Toolkit.getDefaultToolkit().getimage("img/cloud1.png");
    cloud2 = Toolkit.getDefaultToolkit().getimage("img/cloud2.png");
    mc = new MyCanvas();
    ////////////////////////////////
    setLayout(new BorderLayout());
    setBackground(Color.white);
    add(mc);
    mc.setFocusable(true);

}
// 스레드 런 메소드
public void run() {
    while(true) {
        
        airplaneX-=5;
        if(airplaneX==-100) airplaneX = ( (int)fullSize.getWidth()/10 )*10;
        mc.repaint();
        try {Thread.sleep(300);}catch(Exception e) {e.printstacktrace();}
        
    }
}
///////////////// 캔버스///////////////
class MyCanvas extends Canvas{
    public void paint(Graphics g) {
        g.drawImage(airplane,airplaneX,airplaneY,100,this);
        for(int i=0; i<r.length;i++) {
            if(i<(r.length/2)) g.drawImage(cloud1,r[i][0],r[i][1],30,this);
            else if(i>=(r.length/2)) g.drawImage(cloud2,this);
        }
    }
}

////////////////// 프레임 사이즈 구하기///////////////
public void getFrameSize() {
    frameSize = getSize();
    fullSize = Toolkit.getDefaultToolkit().getScreenSize();
    airplanesize();
    cloudSize();
}

//// 항공기 사이즈////////
public void airplanesize() {
    airplaneX = ( (int)fullSize.getWidth()/10 )*10;
    airplaneY = (( (int)frameSize.getHeight()/2 - 15) /10 ) *10;
}

///////// 구름 사이즈//////////
public void cloudSize(){
    for(int i =0; i<r.length;i++) {
        r[i][0] = ran.nextInt(((int)fullSize.getWidth()/10)*10);
        r[i][1] = ran.nextInt(((int)frameSize.getHeight()/10)*10);
    }
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。