drawImage (g)로 스플래시 화면을 만드는 적절한 방법

Adrian M.

나는 아직 표면 아래로 멀리 여행하지 않았지만 JApplet을 만드는 법을 배우고 있습니다. 인터페이스가 "도장"되기 전에 paintComponent (s)에 의해 이상적으로 그려 지거나 paint () 메소드 내에서 추가되는 image (.png)가 있습니다.

흥미롭게도 JApplet은 appletviewer에 의해 복제 된 후에 만 ​​의도 한대로로드됩니다. 수명주기 또는 운영 역학에 대한 이해가 부족한 것 같습니다.

다음은 스윙 컴포지션의 코드입니다. 간결성을 위해 정의가 제거되었습니다.

 public class JFriendsPhones extends JApplet implements ActionListener, MouseListener {  

public void init(){


    submit.addActionListener(this);
    queryByName.addActionListener(this);
    queryByNum.addActionListener(this);



    setVisible(true);

    introduction = getGraphics();

    prepareImage(intro, this);
    intro = getImage( getCodeBase(), "introduction.png");

    setVisible(true);

    validate();
}

public void start(){

}

public void paint(Graphics g){

    paintComponent(g);


    }


public void stop(){

}

public void destroy(){

}

public void actionPerformed( ActionEvent ev ){

    Object source = ev.getSource();

    returnLab.setVisible(false);
    resultsPan.setBackground(Color.white);

    if( true ){

        if( queryByName.getText().equals("") != true && queryByNum.getText().equals("") != true ){

                outcomeLab.setText("Search by only one term");
                queryByName.setText("");
                queryByNum.setText("");

        } else if( queryByName.getText().equals("") == true && queryByNum.getText().equals("") == true){
            outcomeLab.setText("Enter search term");

            } else {

                if(queryByName.getText().equals("") == false){

                    for( int i = 0; i < 5; i++ ){
                        if(queryByName.getText().equalsIgnoreCase(friends[i])){
                            resultsPan.setBackground(new Color(190,255,200));
                            outcomeLab.setText("1-result found:");
                            returnLab.setText(frNumbers[i]);    
                            returnLab.setVisible(true);
                            found = true;
                        } 

                    } if(found == false){
                        resultsPan.setBackground(new Color(240,100,100));
                        outcomeLab.setText("0-matches");
                    }
                } else {

                    for( int i = 0; i < 5; i++ ){

                        if(queryByNum.getText().equalsIgnoreCase(frNumbers[i])){
                            resultsPan.setBackground(new Color(190,255,200));
                            outcomeLab.setText("1-result found:");
                            returnLab.setText(friends[i]);  
                            returnLab.setVisible(true);
                            found = true;
                        }                                       
                    }

                        if( found == false){
                                resultsPan.setBackground(new Color(240,100,100));
                                outcomeLab.setText("0-matches");
                        }

        }

              }
    }

    found = false;
}

public void componentResized( ComponentEvent cEv){
        repaint();
}

@Override
public void componentMoved(ComponentEvent e) {
        contain.repaint();

}

@Override
public void componentShown(ComponentEvent e) {

    paintComponent(introduction);

}

@Override
public void componentHidden(ComponentEvent e) {
    // TODO Auto-generated method stub

}

public void mouseClicked( MouseEvent clicked){
    repaint();
}

@Override
public void mousePressed(MouseEvent e) {

}

@Override
public void mouseReleased(MouseEvent e) {

}

@Override
public void mouseEntered(MouseEvent e) {

}

@Override
public void mouseExited(MouseEvent e) {

}

public void paintComponent(Graphics gr){

    super.paintComponents(gr);

    if(initialized == false){

        gr.drawImage(intro, 10, 10, 280, 430, this);
        validate();
            initialized = true;
        } else {

        titl_instrPan.add(titleLab);
        titl_instrPan.add(instructLab);
        titl_instrPan.add(instructLab2);

        inputPan.add(byNameLab);
        inputPan.add(queryByName);
        inputPan.add(byNumLab);
        inputPan.add(queryByNum);
        inputPan.add(regionPan);
        inputPan.add(submit);

        resultsPan.add(outcomeLab, BorderLayout.NORTH);
        resultsPan.add(returnLab, BorderLayout.SOUTH);
        resultsPan.setBackground(Color.white);

        mainPanel.add(titl_instrPan, BorderLayout.NORTH);
        mainPanel.add(inputPan, BorderLayout.CENTER);
        mainPanel.add(resultsPan, BorderLayout.SOUTH);

        contain.add(mainPanel);
        setVisible(true);
        validate();

        }


} end class JFriendsPhones
Camickr

super.paint (...)를 호출하지 않아 Swing의 기본 페인팅 메커니즘을 망쳤습니다.

어쨌든 JApplet의 paint (..)를 덮어 쓰지 마세요 !!! 이 작업을 수행 할 필요가 없습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

스플래시 화면을 효율적으로 만드는 방법

React Native로 스플래시 화면을 만드는 방법

스플래시 /로드 화면을위한 Flutter 최고의 방법

스플래시 화면 후 동일한 레이아웃을 만드는 방법

이것을 쉘 스크립트로 만드는 적절한 방법

스플래시 화면처럼 활동을 한 번만 실행하는 방법

pyqt5에서 스플래시 효과로 화면을 동적으로 전환하는 방법

iOS에서 스플래시 화면을 가로 및 세로 모두에 맞게 만드는 방법

변수로 적절한 iframe을 만드는 방법

이 방법으로 스플래시 화면을 만드는 것이 안전합니까?

스플래시 화면에서 로딩 3 점 애니메이션을 만드는 방법

스레드로부터 안전한 싱글 톤을 만드는 적절한 방법은 무엇입니까?

JAR 파일로 만들면 정상적으로 실행되는 프로젝트에 스플래시 화면을 추가하는 방법

Jersey deserialization 프로세스를 발생시키기 위해 적절한 JAXB 매핑을 만드는 방법

Jersey deserialization 프로세스를 발생시키기 위해 적절한 JAXB 매핑을 만드는 방법

이미지 크기 조정을위한 g.drawImage () 메서드의 성능을 향상시키는 방법

Guava의 ImmutableSet를 하위 클래스로 만드는 적절한 방법

JavaFX에서 투명한 배경으로 시작 화면을 만드는 방법

지연 후 kivy에서 스플래시 화면을 닫는 깨끗한 방법

스쿼시 된 git에서 적절한 병합 커밋을 만드는 방법

마이크로 서비스에서 도메인 모델 및 뷰 모델을 만드는 적절한 방법

소프트웨어를 릴리스하고 설치 프로그램을 만드는 "적절한"방법

백업 목적으로 플래시 드라이브의 정확한 복제본을 만드는 방법

IOS의 Action Extension에서 스플래시 화면을 만드는 방법

kivymd를 사용하여 스플래시 화면을 만드는 방법

http 요청을 캐시하거나로드하는 각도 적절한 방법

다중 스레드로 SIGTERM을 처리하는 적절한 방법

팝업 창을로드 할 때 빈 팝업에 스플래시 화면을 추가하는 방법

여러 갈래 스레드를 만드는 적절한 방법