私はアプリケーションを作っています。私はActionListenerを追加したボタンがあるjavaで。 it(ボタン)が生成するActionEventは、いくつかのコードを実行します。今度は、このコードをアプリが実行されるたびに実行します。ボタンを押すことなく開始します。私はActionPerformedが含んでいるコードがアプリケーションとして実行されるように(ボタンを押さずに)Actioneventを生成したいと思います。開始。その後、ボタンを押すたびに実行されることがあります。プログラムでJavaでアクションを生成する
答えて
はい、実行できますが、ボタンを押したりActionListenerのコードを呼び出すのではなく、ボタンを押してプログラムの開始時に共通の動作をすることが目的であるため、実際には意味をなさないアップ。これを実現する最善の方法は、ActionListenerのactionPerformedメソッドと起動時のクラスの両方によって呼び出されるメソッドを持つことです。
ここに簡単な例があります。次のコードでは、メソッドがボタンを無効にし、JPanelを緑色にし、2秒後にボタンを有効にしてJPanelの背景色をデフォルトにリセットするTimerを開始します。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ActionOnStartUp extends JPanel {
private static final int PANEL_W = 400;
private static final int PANEL_H = 300;
private static final int TIMER_DELAY = 2000;
private JButton turnGreenBtn = new JButton("Turn Panel Green for 2 seconds");;
public ActionOnStartUp() {
turnPanelGreen();
turnGreenBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
turnPanelGreen();
}
});
add(turnGreenBtn);
}
public void turnPanelGreen() {
setBackground(Color.green);
turnGreenBtn.setEnabled(false);
new Timer(TIMER_DELAY, new ActionListener() {
public void actionPerformed(ActionEvent ae) {
setBackground(null);
turnGreenBtn.setEnabled(true);
((Timer) ae.getSource()).stop(); // stop the Timer
}
}).start();
}
@Override
public Dimension getPreferredSize() {
return new Dimension(PANEL_W, PANEL_H);
}
public static void createAndShowGui() {
JFrame frame = new JFrame("Foo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new ActionOnStartUp());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
あなただけのコンストラクタを使用して、他のJavaオブジェクトと同じようにするActionEventを作成することができます。この動作は、メインクラスのコンストラクタにとのJButtonのActionListenerののactionPerformedメソッドの両方で呼び出された原因となる方法。そして、あなたはComponent.processEvent(..)
とコンポーネントにそれらを直接送信することができますただし、この場合には、私はあなたがより良い両方と呼ばれる別の関数にコードを作っていると思う:
- (あなたはそれがイベント処理スレッドで発生する必要がある場合はSwingUtilities.invokeLaterを()またはSwingUtilities.invokeAndWaitを(使用可能))ボタンは、アプリケーションの起動コードによって直接
- を押されたActionListener
ことでこの方法でよコードが何であれ、プレゼンテーションロジックとビジネスロジックを混在させないでください。
通常、ボタンアクションイベントは、外部イベントに応答して、ユーザー(または、 )アプリケーションと対話します。アプリケーションの開始時に実行したいコードをボタンが実行する場合は、すべての場所を適切な場所に置くだけでよいのですか?
例:
public class SomeSharedObject {
public void executeSomeCode() { /*....*/ }
}
が
public void setButtonAction(final SOmeSharedObject obj) {
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
obj.executeSomeCode();
}
});
}
ようなもので、ボタンを設定し、アプリケーションで実行するコードは、あなたが必要な場合は、
public void initApplication(SomeSharedObject obj) {
obj.executeSomeCode();
}
のようなもので始まり、実行するにはしばらく時間がかかりますactionPerformed
ボタンイベント内で別のスレッドを使用するようにして、アプリケーションUIがフリーズしないようにします。
JButton.doClick() JButtonに関連付けられたActionEventを発生させる必要があります。
- 1. Monotouch:IBOutletとアクションをプログラムで作成する
- 2. Javaプログラムのコールグラフを生成する - Eclipse
- 3. プログラムで生成されたボタンがアクションを実行しない
- 4. 合成ポートレートモザイクをプログラムで生成する
- 5. Javaでユーザが定義した行列を生成するプログラム
- 6. Javaプログラムでサウンドを再生する
- 7. プログラムでJava Webアプリケーションを作成する
- 8. C Win32 DLLをプログラムで生成する
- 9. プログラムでredisインスタンスを生成する
- 10. 文書をプログラムで生成する
- 11. プログラムでキープレスを生成する方法
- 12. Haskellでプログラムを生成する
- 13. WebControlsをプログラムで生成する
- 14. 頂点をプログラムで生成する
- 15. プログラムでpptファイルを生成する
- 16. 値をプログラムで生成するscala
- 17. PHPでアクションの発生合計を生成する
- 18. イメージソースURLをプログラムで生成
- 19. Googleのアクションをプログラムで作成するAPI
- 20. JavaでHMacSHA256キーをプログラムで生成して保存するには?
- 21. JavaプログラムをJavaプログラムでコンパイルする...
- 22. Play Javaでのアクションの作成
- 23. javaコードを使用してapkファイルをプログラムで生成する方法
- 24. プログラムでグラデーションを生成しますか?
- 25. 100個の乱数を生成するJavaプログラム
- 26. アクションのトークンを生成
- 27. EclipseでJava Beanセッターを生成する
- 28. JavaでAPIトークンを生成するベストプラクティス
- 29. EclipseでJavaコードを生成するJFormDesigner
- 30. JavaでSVGイメージを生成する
いいえ、Minkeraはコードが完了するまでに(SwingWorkerが必要であることを示唆しています)、SwingUtilitiesを使用するように宣言していませんでしたが、SwingUtilities.invokeLater(。あなたがプログラムの起動時にそれを呼び出すのであれば、イベントスレッド*から*オフ)。 –
あなたは正しいです、彼の答えを再読した後、私はそのパラグラフを編集しました –