对于一个不太具体的标题提前抱歉 - 问题很难描述。我必须有一个非常简单的程序,一个带有X的窗口,一个告诉所述X中字体大小的数字,以及两个按钮 - 单击的增加和减少应该将字体大小和数字改为1。它们位于实现ActionListener
的类中这不是actionPerformed。 if else是Ctrl + C,Ctrl + V,唯一改变的是++和 - 。问题是程序一旦运行有一个正确工作的减少按钮(减少1)但增加导致值和字体增加2。
public void actionPerformed(ActionEvent e) {
if (e.getSource() == increase) {
size.setText(++value+"");
setFont(value);
}
else if (e.getSource() == decrease) {
size.setText(--value+"");
setFont(value);
}
}
在盯着我的代码并尝试不同的编写方式 - 在单独的行中改变价值等等之后,我仍然无法理解为什么会发生这种情况。下面是整个程序(非常简短,正如我所说它应该是对JFrame及其组件的简单练习):
class FontDisplay extends JFrame implements ActionListener{
JLabel size, letter;
JButton increase, decrease;
int value; //to get rid of converting from strings to ints when changing size
public FontDisplay() {
value = 18;
setLayout(new GridLayout(2,2));
size = new JLabel("18");
letter = new JLabel("X", JLabel.RIGHT);
setFont(18);
increase = new JButton("Increase");
increase.addActionListener(this);
decrease = new JButton("Decrease");
decrease.addActionListener(this);
add(letter);
add(size);
add(increase);
add(decrease);
increase.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == increase) {
size.setText(++value+"");
setFont(value);
}
else if (e.getSource() == decrease) {
value--;
size.setText(value+"");
setFont(value);
}
}
private void setFont(int i) {
Font font = new Font(letter.getFont().getFontName(), Font.PLAIN,i);
letter.setFont(font);
}
public static void main(String[] args){
FontDisplay t = new FontDisplay();
t.setSize(200, 200);
t.setTitle("Check Font Size");
t.setVisible(true);
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}