첫 번째 클릭 후 주기적으로 텍스트를 변경하는 JButton을 만들고 싶습니다. Swing 라이브러리에 익숙하지 않습니다. 좋은 출발점은 무엇입니까? 조치없이 텍스트를 업데이트해도됩니까?정기적으로 JButton 텍스트 변경
감사합니다.
첫 번째 클릭 후 주기적으로 텍스트를 변경하는 JButton을 만들고 싶습니다. Swing 라이브러리에 익숙하지 않습니다. 좋은 출발점은 무엇입니까? 조치없이 텍스트를 업데이트해도됩니까?정기적으로 JButton 텍스트 변경
감사합니다.
고정 된 시간마다 변경하려면 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.
원하는 시간이 올 때마다 다시 그리거나 그냥 setText가 필요합니까? –
@Mehmet : 그냥'setText (newStr)'가 작동해야합니다. –
고맙습니다. 이것은 내가 필요한 것입니다. –
주기적으로 (예 : 5 초마다) 변경하려는 경우 단추의 텍스트를 원하는 값으로 설정하고 필요에 따라 다시 그려주는 새 스레드를 만들 수 있습니다.
을 나는 당신이 (당신이 어떤 문서를 찾을 수 있습니다 here) 타이머
Timer timer = new Timer(100,this);
클래스가 있습니다를 생성하는 것이 좋습니다 extend 액션 리스너 ed는 JButton
("단추"라고 부름)의 텍스트를 변경할 수있는 다음 메소드를 구현합니다. 난 단지 제안 스윙의 모든 정기 이벤트
public void actionPerformed(ActionEvent e) {
if(e.getSource.equals(timer)){
button.setText("newText");
}
}
루카
예를 들어,해야 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();
}
});
}
}
+1 스윙 타이머를 사용합니다. – mre
모든 다른 답변에서는 언급하지 비 정기적으로 업데이트하십시오. 불규칙하게 업데이트해야하는 경우 GUI 클래스에서 updateButton(); 메소드를 호출 할 수 있습니다. 당신이 텍스트를 바꾸기를 원할 때마다 그 전화를 부르십시오.
public void updateButton(String newText)
{
Button.setText(newText);
}
누군가가 불규칙하게 설정하고 싶을 경우에 대비해 추가 할 것이라고 생각했습니다.
버튼을 클릭 할 때 텍스트가 변경 될 때를 말하고 싶습니까? 또는 무엇을? –
아니요, 클릭하지 않고 텍스트를 바꾸고 싶습니다. 매 2 초마다 말하십시오. –