1
import javax.swing.*;
import java.awt.event.*;
public class SimpleGUI3 implements ActionListener {
JButton button;
private int numClick;
public static void main(String[] args) {
SimpleGUI3 gui = new SimpleGUI3();
gui.go();
}
public void go() {
JFrame frame = new JFrame();
button = new JButton("Click me.");
button.addActionListener(this);
frame.getContentPane().add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
button.setLocation(100, 100); //This code do not change the button location if numClick++ (next row) used.
numClick++; //If comment numClick++ the button changes location on click. Why location doesn't changes if this row uncomment?
button.setText("Has been clicked " + numClick + " times.");
}
}
質問はありますか?のsetLocationなし整数増分がない場合にのみ
'button.setLocation(100,100);'しないでください。それは効果的にレイアウトマネージャーと戦っています。ボタンを動かす目的は何ですか? –
目的は、その仕組みを理解することです。コメント付きのnubClick ++では、ボタンは一度クリックすると移動します。 – jakarjakar
* "目的はそれがどのように機能するかを理解することだけです。" *だから、行えないはずのものがどのように作用するのか理解したいですか?全く無意味です。 **ボタンがクリックされたときにコンポーネントを移動させる実際の理由があった場合、コンポーネントを含むパネルをラップする 'EmptyBorder'のパラメータを変更することによって行うのが最適です。しかし、代わりにあなたの注意を実際に有用でありベストプラクティスを維持するものに注目してください。 –