저는 프로그래밍에 익숙하며 이에 대해 약간의 문제가 있습니다.JDialog가 처리하지 않습니다.
문제는 내가이 프레임을 다른 프레임으로 변경하고 돌아갈 때 다른 프레임의 시간에 타이머를 표시하기 위해 JDialog를 사용하여 할당을 만드는 데 스윙 팔레트를 사용하고 있습니다. 이전 JDialog의 타이머가 실행중인 첫 번째 타이머와 겹치기 때문에 문제를 해결할 수 없었습니다.
다음은 코드입니다. 나는 그게 문제라고 생각하지 않기 때문에
주요
public static void main(String[] args) {
Panel0 screen=new Panel0();
screen.setTitle("");
screen.setLocationRelativeTo(screen);
screen.setVisible(true);
}
1 FRAME
public class Panel0 extends javax.swing.JFrame {
Panel s=new Panel();
private void fisica1ActionPerformed(java.awt.event.ActionEvent evt) {
s.time();
s.setTitle("FISIC I");
s.setLocationRelativeTo(s);
s.setVisible(rootPaneCheckingEnabled);
s.dialog.setVisible(rootPaneCheckingEnabled);
dispose();
}
2 FRAME
public class Panel extends javax.swing.JFrame {
private void EndActionPerformed(java.awt.event.ActionEvent evt) {
dialog.dispose();
dialog.setDefaultCloseOperation(0);
Panel0 pan=new Panel0();
pan.setLocationRelativeTo(p1);
pan.setVisible(rootPaneCheckingEnabled);
dispose();
}
void time(){
t=new Timer(1,new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (startTime<0) {
startTime=System.currentTimeMillis();
}
long now = System.currentTimeMillis();
long clockTime = now - startTime;
if (clockTime >= duration) {
clockTime = duration;
t.stop();
}
SimpleDateFormat sdf=new SimpleDateFormat("mm:ss:SS");
clock.setText(sdf.format(duration-clockTime));
}
});
t.setInitialDelay(0);
if (!t.isRunning()) {
startTime = -1;
t.start();
}
}
나는, 타이머 등의 inizialization을 생략.
명확한 설명 : 일단 두 번째 프레임을 닫으면 1 단계가 열리고이 프로세스를 반복해서 반복 할 수있는 옵션이 제공되며 "대화 상자"라는 JDialog가 데이터와 겹칠 때마다 (시계 번호 겹침).
* 코드는 ** 빠졌습니다 ** 더 나은 도움을 받으려면 [MCVE] 또는 [짧은, 자체 포함, 올바른 예] (http://www.sscce.org/)를 게시하십시오.). –