【发布时间】:2015-01-05 00:30:43
【问题描述】:
我有一个编辑按钮,它控制更改按钮的操作。
当 Editbutton 为 true 时,Changebutton 应该转到 Edit,当它不是 true 时应该转到 view。
问题是 Editbutton 没有始终如一地执行。
第一次加载代码时,Editbutton 将在 true 和 false 之间切换,这是应该的。但是,如果我按下 Changebutton,Editbutton 将不再在 true 和 false 之间切换,而是在一次迭代中变为 true 然后变为 false。第三次将按预期执行,并继续此交替循环。
我在 Editbutton 的侦听器中使用了 return 语句,它应该在 if 语句之后停止代码。我已经添加了数字来跟踪正在执行的内容,并且似乎代码第二次在 return 语句之后执行,例如没有被停止。无论是那个还是由于某种原因,代码正在第二次重新加载。
以下是我的代码的 MCVE 版本:
public class Toolbar {
static Color c;
static JButton buttonEdit = new JButton("Edit");
public static JFrame frame = new JFrame();
static boolean Edit, Delete;
public static void main(String[] args) {
Toolbar.WorkDiaryAllGui();
System.out.println("TOOLBAR");
}
public static JPanel Toolbar(String panelname){
FlowLayout layout = new FlowLayout();
JPanel Toolbar = new JPanel(new BorderLayout());
Toolbar.setLayout(layout);
JButton Changebutton = new JButton("Diary");
Changebutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
WorkDiaryAllGui();
}
});
buttonEdit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(Edit==false){
Edit = true;
buttonEdit.setBackground(Color.CYAN);
System.out.println(1);
return;
}
if(Edit==true){
Edit = false;
buttonEdit.setBackground(c);
System.out.println(2);
return;
}
}
});
Toolbar.add(Changebutton);
Toolbar.add(buttonEdit);
return Toolbar;
}
public static void WorkDiaryAllGui(){
JPanel WorkDiaryAll = new JPanel();
WorkDiaryAll.add(Toolbar.Toolbar("Whole Diary"));
frameGui(WorkDiaryAll, "Whole Diary");
}
public static void frameGui(JPanel panel, String name){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(panel);
frame.setSize(1200,500);
frame.setVisible(true);
}
}
【问题讨论】:
-
不,不太可编译。
Customers是什么? -
"但是,如果我按下Changebutton,Editbutton 将不再在true 和false 之间切换,而是在一次迭代中进入true 和false" 为什么你认为buttonEdit 的listener 应该在什么时候被调用你按下了ChangeButton?
-
@almasshaikh 不应调用 buttonEdit 的侦听器,但由于某种原因,按下 Changebutton 时 buttonEdit 的行为会发生变化
标签: java boolean return listener