JButton
フォーカスゲインとロストイベントのサイズを増減したい。JLabel
同時に、 focusd のテキストでを変更したいと思いますJButton
。
テキストを変更していない場合JLabel
、ボタンのサイズを変更できますが、ラベルを同時に変更している場合、サイズはJButton
変更されません。
コードは次のとおりです。
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);
}
}
}