I want to increase and decrease the size of JButton
on its focus gain and lost event. Simultaneously I want to change the JLabel
with the text of focussed JButton
.
If I'm not changing the JLabel
text, I'm able to change the size of buttons, but when I'm changing the label simultaneously the size of JButton
does not change.
Here is the code:
public class Main extends JFrame implements FocusListener {
JButton b1, b2;
JLabel lbl;
private static final long serialVersionUID = 1L;
public Main() {
setSize(600, 600);//Size of JFrame
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);//Sets if its visible.
JPanel panel = new JPanel();
b1 = new JButton("Start");//The JButton name.
b1.setRequestFocusEnabled(false);
b1.addFocusListener(this);
panel.add(b1);
b2 = new JButton("End");//The JButton name.
b2.setRequestFocusEnabled(false);
b2.addFocusListener(this);
panel.add(b2);
add(panel, BorderLayout.CENTER);
lbl = new JLabel(" ");
add(lbl, BorderLayout.SOUTH);
}
public static void main(String[] args) {
new Main();//Reads method main()
}
/*
* What the button does.
*/
@Override
public void focusLost(FocusEvent ae) {
if (ae.getSource() == b2) {
b2.setSize(55, 26);
} else if (ae.getSource() == b1) {
b1.setSize(55, 26);
}
}
@Override
public void focusGained(FocusEvent ae) {
if (ae.getSource() == b2) {
lbl.setText("End");
b2.setSize(55, 40);
} else if (ae.getSource() == b1) {
lbl.setText("Start");
b1.setSize(55, 40);
}
}
}