버튼에 보이지 않게 한 후 doClick
으로 전화를 걸 수 있습니까?
좋아 : do 보이지 않는 버튼을 클릭하십시오
StopBtn.setVisible(false);
StopBtn.doClick();
것이다 doClick()
버튼에 보이지 않게 한 후 doClick
으로 전화를 걸 수 있습니까?
좋아 : do 보이지 않는 버튼을 클릭하십시오
StopBtn.setVisible(false);
StopBtn.doClick();
것이다 doClick()
방금 해 보았습니다. 여전히 작동하므로 여전히 actionPerformed()
메소드를 트리거합니다.
그러나 비활성화하면 작동하지 않습니다. button.setEnabled(false)
이는 의미가 있습니다.
나를 위해 그것을 시도해 줘서 고마워요 댄. 그렇습니다. disabled 일 때 아무것도하지 않을 때 의미가 있습니다. 그러나 버튼이 보이지 않아도 doClick()이 여전히 작동하면 이상합니다. – SomeDude
이 (당신이 오라클에서 그 사람들이 이제까지 동작을 변경하는 것이 두려워하면 단위 테스트에서 예) 단지
@Test
public void clickOnInvisibleButton(){
JButton button = new JButton("test button");
button.setVisible(false);
final boolean[] buttonClicked = new boolean[]{false};
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
buttonClicked[0] = true;
}
});
button.doClick();
assertTrue("Button has not been clicked", buttonClicked[0]);
}
그렇지 않으면 그것을 테스트하는 과정이었다 발견 할 수있는 가장 쉬운 방법은, 촬영 한 수있는 해당 방법의 소스 코드를 살펴보십시오.
public void doClick(int pressTime) {
Dimension size = getSize();
model.setArmed(true);
model.setPressed(true);
paintImmediately(new Rectangle(0,0, size.width, size.height));
try {
Thread.currentThread().sleep(pressTime);
} catch(InterruptedException ie) {
}
model.setPressed(false);
model.setArmed(false);
}
여기에는 가시성에 대한 확인이 없습니다. 조금 더 (예 : 모델의 setPressed
메소드에서) enabled
상태에 대한 확인을 볼 수 있지만 가시성에 대한 점검이 없다는 것을 분명히 알 수 있습니다. 또한 버튼을 나는이가 자신을 위해 그것을 밖으로 시도하고 무슨 일이 일어 나는지하는 것이 가장 좋습니다 그 인스턴스 중 하나라고 생각
public void setPressed(boolean b) {
if((isPressed() == b) || !isEnabled()) {
return;
}
if (b) {
stateMask |= PRESSED;
} else {
stateMask &= ~PRESSED;
}
if(!isPressed() && isArmed()) {
int modifiers = 0;
AWTEvent currentEvent = EventQueue.getCurrentEvent();
if (currentEvent instanceof InputEvent) {
modifiers = ((InputEvent)currentEvent).getModifiers();
} else if (currentEvent instanceof ActionEvent) {
modifiers = ((ActionEvent)currentEvent).getModifiers();
}
fireActionPerformed(
new ActionEvent(this, ActionEvent.ACTION_PERFORMED,
getActionCommand(),
EventQueue.getMostRecentEventTime(),
modifiers));
}
fireStateChanged();
}
의
actionPerformed
방법을 트리거하는ActionEvent
해고되는 것을 알 수있다. – mrranstrom