我正在使用 a JFXDrawer
,SalesDrawer
其中包含 aVBox
和 2 JFXButtons
。的内容JFXDrawer
有一个单独的控制器,SalesDrawerController.java
. 控制器文件SalesController.java
包含JFXDrawer
2 个锚窗格,我希望在单击JFXDrawer
. 到目前为止,我一直在使用一组静态布尔变量,并确保单击 JFXDrawer 中的一个按钮,其中一个变量设置为 true。然后在 中 SalesController.java
,我使用一个TimerTask
对象来检查这些变量中的哪些是真实的,并将所需的锚窗格设置为可见。有没有更好的方法来做到这一点?
SalesDrawerController.java
public class SalesDrawerController implements Initializable {
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
@FXML
private void button1Hit(MouseEvent event) {
SalesController.SD[0]=true;
}
@FXML
private void button2Hit(MouseEvent event) {
SalesController.SD[1]=true;
}
}
销售控制器.java
public class SalesController implements Initializable {
public static boolean SD[]= {false,false};
static boolean tock=true;
@FXML
private AnchorPane eq_newpane;
@FXML
private AnchorPane eq_delpane;
@FXML
private JFXHamburger SalesHam;
@FXML
private JFXDrawer SalesDraw;
public void initialize(URL url, ResourceBundle rb) {
eq_newpane.setVisible(true);
eq_delpane.setVisible(false);
eq_newpane.setDisable(false);
eq_delpane.setDisable(true);
VBox box = FXMLLoader.load(getClass().getResource("/fxml/SalesDrawer.fxml"));
SalesDraw.setSidePane(box);
HamburgerBackArrowBasicTransition transition = new HamburgerBackArrowBasicTransition(SalesHam);
transition.setRate(-1);
SalesHam.addEventHandler(MouseEvent.MOUSE_PRESSED,(e)->{
transition.setRate(transition.getRate()*-1);
transition.play();
if(SalesDraw.isShown()){
SalesDraw.close();
SalesDraw.toBack();
}
else{
SalesDraw.toFront();
SalesDraw.open();
}
});
threadtock();
}
public void threadtock() {
final java.util.Timer timer = new java.util.Timer();
final TimerTask delayedThreadStartTask;
delayedThreadStartTask = new TimerTask() {
public void run() {
try
{
if(tock){
if(SD[0])
{
eq_newpane.setVisible(true);
eq_delpane.setVisible(false);
eq_newpane.setDisable(false);
eq_delpane.setDisable(true);
}
else if(SD[1]){
eq_delpane.setVisible(true);
eq_newpane.setVisible(false);
eq_newpane.setDisable(true);
eq_delpane.setDisable(false);
}
if(tock)
{
threadtock();
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
};
timer.schedule(delayedThreadStartTask, 500);
};
}