> Java > java지도 시간 > 타이머가 올바르게 반복됨에도 불구하고 Java Swing Timer의 ActionListener가 작업을 트리거하지 않는 이유는 무엇입니까?

타이머가 올바르게 반복됨에도 불구하고 Java Swing Timer의 ActionListener가 작업을 트리거하지 않는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-01 03:50:28
원래의
974명이 탐색했습니다.

Why is my Java Swing Timer's ActionListener not triggering actions despite the timer repeating correctly?

Javax.swing 타이머는 잘 반복되지만 ActionListener는 아무 작업도 수행하지 않습니다.

제공된 코드 스니펫에서 타이머는 다음과 같이 성공적으로 구성되었습니다. 일정한 간격으로 반복하십시오. 그러나 타이머와 연결된 ActionListener는 타이머가 만료될 때 어떤 작업도 트리거하지 않습니다.

ActionListener의 actionPerformed 메서드는 타이머가 트리거될 때 작업을 수행합니다. 이 경우 메서드는 텍스트 필드의 배경색을 흰색과 분홍색 사이에서 전환하려고 시도합니다. 그러나 타이머의 연속 실행에도 불구하고 텍스트 필드의 배경색은 변경되지 않습니다.

문제의 근본 원인은 정적 내부 클래스를 ActionListener로 사용하는 데 있습니다. 정적 내부 클래스는 자신을 둘러싸는 클래스의 정적 멤버에만 액세스할 수 있다는 독특한 특성을 가지고 있습니다. 이 경우 SpreademPanel 및 HistoryPnl 변수는 정적이 아니므로 Flash 클래스 내에서 액세스할 수 없습니다.

이 문제를 해결하려면 SpreademPanel 및 HistoryPnl을 정적으로 만들거나 Flash 클래스의 인스턴스를 생성하고 전달하면 됩니다. ActionListener입니다.

다음은 인스턴스 기반 접근 방식의 예입니다.

<code class="java">// Instance-based ActionListener
class Flash implements ActionListener
{
    private JComponent textfield;

    public Flash(JComponent textfield) {
        this.textfield = textfield;
    }

    @Override
    public void actionPerformed(ActionEvent evt)
    {
        if (this.flasher)
        {
            textfield.setBackground(Color.white);
        }
        else
        {
            textfield.setBackground(Color.pink);
        }
        this.flasher = !this.flasher;
    } //actionPerformed
} 

// Main class
...
// Setup timer
Flash flash = new Flash(SpreademPanel.historyPnl.NameTxt); // Pass the text field to the Flash instance
tmr = new javax.swing.Timer(1000, flash);
...</code>
로그인 후 복사

위 내용은 타이머가 올바르게 반복됨에도 불구하고 Java Swing Timer의 ActionListener가 작업을 트리거하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿