这是JFrame HidingOperationView的重要片段:
hideBtn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0){
currentPixelInImageToHide.setVisible(true);
pixelOfToHideTable.setVisible(true);
nextStep.setVisible(true);
doAll.setVisible(true);
SteganographyOperationsUtil.hidingOperation(
getSelectedFirstImageModel(), copyOfToHide, posterisation);
}
});
nextStep.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0){
SteganographyOperationsUtil.key=1;
}
});
doAll.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0){
SteganographyOperationsUtil.key2=1;
}
});
key和key2是我在类SteganographyOperationsUtil中的控制者,何时在循环内等待:
int key = 1 int key2 = 0
键由“下一步”按钮控制,因此循环只前进一次,在JTable中显示结果并等待另一次点击。 Key2由按钮'doAll'控制,允许循环运行直到结束而不停止。
隐藏操作中的:
for (int x = 0; x < hiding.getWidth(); ++x) {
for (int y = 0; y < hiding.getHeight(); ++y) {
if(temp < header.length()){
...
}else{
while (key!=1){
sleep(100);
}
key=key2;
...
if (key2 == 0){
throwToTable(HidingOperationView.pixelOfToHideTable,
colorOfToHideBinary);
}
}
}
}
问题是控制循环的按钮根本没有出现, 他们只是这样做,当我评论这条线: SteganographyOperationsUtil.hidingOperation(getSelectedFirstImageModel(),copyOfToHide,posterisation);
也许这不是控制循环的最好方法,但我不知道如何做到这一点。