내가 여기 넣은 의견을보십시오. 왜 이것이 아무에게도 작동하지 않는다는 아이디어가 있습니까? 그것은 FlowLayout btw를 사용하여, 이것은 완전히 잘 작동해야합니다. 나는 정말로 도움을받을 수 있었다. 정말 고마워! 그것은 당신이 스윙과 동일한 스레드에서 실행하면 코드 때문에 자바의 event dispatch thread 에 익숙해 질 필요가 꽤 가능성 게시 한 내용을 코드에서 그러나, 무엇이 잘못되었는지를 알려하는 것은 불가능 SSCCE을 보지 않고JPanel 타이머가 작동하지 않는 위치
package Primary;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.Timer;
public class OpenPanel implements Runnable,Header{
private static String panel;
public OpenPanel(String enterpanel){
panel = enterpanel;
}
private Timer nextloc;
private JPanel usePanel;
private static ClosePanel cp = new ClosePanel("null");
public void run(){
Timer andgo = new Timer(10,new TimerListener());
while(!cp.getCloseDone()){
andgo.start();
andgo.restart();
}
if(panel.equals("topiccreator")){
usePanel=topiccreator;
}else{
System.out.println("Error moving panel");
usePanel=mainmenu;
}
// This is the setLocation part that does nothing
// All the set locations in the loop with the timer work completely fine
usePanel.setLocation(usePanel.getX()+800,usePanel.getY());
usePanel.setVisible(true);
nextloc = new Timer(50,new TimerListener());
for(int r=0;r<3500;r+=6){
nextloc.start();
nextloc.restart();
}
}
private class TimerListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource()==nextloc){
usePanel.setLocation(usePanel.getX()-5,usePanel.getY());
}
}
}
}
이 코드는 컴파일 가능한 아니므로이 코드는 말도 안돼 .. 그것에 대해 –
을 말해 어렵다. 시작은 패널이 레이아웃 관리자의 통제하에 있으며, 다음에 다시 유효성을 검사 할 때 모든 변경 사항이 무효화되고 레이아웃 관리자가 원하는대로 처리 할 것입니다. 루프에서 루프를 완료 할 때까지 실제로 트리거하도록 변경하지 않는 타이머를 명시하고 다시 시작 (시작)합니다. 간단히 시작하여 종료 조건이 충족 될 때까지 실행하십시오 ... – MadProgrammer
[setLocation do not work] 가능한 복제본 (http://stackoverflow.com/questions/14857219/setlocation-do-not-work) – Piro