2011-08-02 3 views
1

첫 번째 클릭 후 주기적으로 텍스트를 변경하는 JButton을 만들고 싶습니다. Swing 라이브러리에 익숙하지 않습니다. 좋은 출발점은 무엇입니까? 조치없이 텍스트를 업데이트해도됩니까?정기적으로 JButton 텍스트 변경

감사합니다.

+0

버튼을 클릭 할 때 텍스트가 변경 될 때를 말하고 싶습니까? 또는 무엇을? –

+0

아니요, 클릭하지 않고 텍스트를 바꾸고 싶습니다. 매 2 초마다 말하십시오. –

답변

2

고정 된 시간마다 변경하려면 Swing Timer 또는 스레드를 사용하면됩니다. 그러나이를 위해서는 적어도 하나의 동작을 듣고 초기화해야합니다.

당신은 또한 다음과 같은 java.util의에서 TimerTask 클래스를 사용할 수 있습니다 :

java.util.TimerTask timerTask = new java.util.TimerTask() { 
    @Override 
    public void run() { 
     //change button text here using button.setText("newText"); method 
    } 
}; 

java.util.Timer myTimer = new java.util.Timer(); 
myTimer.schedule(timerTask, 3 * 1000, 3* 1000); // This will start timer task after 3 seconds and repeat it on every 3 seconds. 
+0

원하는 시간이 올 때마다 다시 그리거나 그냥 setText가 필요합니까? –

+0

@Mehmet : 그냥'setText (newStr)'가 작동해야합니다. –

+0

고맙습니다. 이것은 내가 필요한 것입니다. –

1

주기적으로 (예 : 5 초마다) 변경하려는 경우 단추의 텍스트를 원하는 값으로 설정하고 필요에 따라 다시 그려주는 새 스레드를 만들 수 있습니다.

1

을 나는 당신이 (당신이 어떤 문서를 찾을 수 있습니다 here) 타이머

Timer timer = new Timer(100,this); 

클래스가 있습니다를 생성하는 것이 좋습니다 extend 액션 리스너 ed는 JButton ("단추"라고 부름)의 텍스트를 변경할 수있는 다음 메소드를 구현합니다. 난 단지 제안 스윙의 모든 정기 이벤트

public void actionPerformed(ActionEvent e) { 
    if(e.getSource.equals(timer)){ 
    button.setText("newText"); 
    } 
} 

루카

3

javax.swing.Timer

예를 들어,해야 Timer를 사용하여 출력

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Random; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.Timer; 

public class CrazyButtonTimer { 

    private JFrame frame = new JFrame(" Crazy Button Timer"); 
    private JButton b = new JButton("Crazy Colored Button"); 
    private Random random; 

    public CrazyButtonTimer() { 
     b.setPreferredSize(new Dimension(250, 35)); 
     frame.getContentPane().add(b); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
     javax.swing.Timer timer = new Timer(500, new TimerListener()); 
     timer.setInitialDelay(250); 
     timer.start(); 
    } 

    private class TimerListener implements ActionListener { 

     private TimerListener() { 
     } 

     @Override 
     public void actionPerformed(final ActionEvent e) { 
      Color c = b.getForeground(); 
      if (c == Color.red) { 
       b.setForeground(Color.blue); 
      } else { 
       b.setForeground(Color.red); 
      } 
     } 
    } 

    public static void main(final String[] args) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       CrazyButtonTimer crazyButtonTimer = new CrazyButtonTimer(); 
      } 
     }); 
    } 
} 
+0

+1 스윙 타이머를 사용합니다. – mre

1

모든 다른 답변에서는 언급하지 비 정기적으로 업데이트하십시오. 불규칙하게 업데이트해야하는 경우 GUI 클래스에서 updateButton(); 메소드를 호출 할 수 있습니다. 당신이 텍스트를 바꾸기를 원할 때마다 그 전화를 부르십시오.

public void updateButton(String newText) 
{ 
    Button.setText(newText); 
} 

누군가가 불규칙하게 설정하고 싶을 경우에 대비해 추가 할 것이라고 생각했습니다.