毎秒 10 秒間連続して新しい行を に追加する単純な Java アプリケーションを作成しましたJTable
。3つのクラスで構成されています。
プログラムの起動時に呼び出されるメインクラス
public class JarBundlerProblem {
public static void main(String[] args)
{
System.err.println("Initializing controller");
new Controller();
}
}
GUI を作成し、それを介して変更するコントローラーdoWork()
public class Controller {
public Controller()
{
doWork(null);
}
public static void doWork(String s)
{
GUI gui = new GUI();
for (int i=0; i<10; i++)
{
gui.addRow("Line "+(i+1));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
そして最後に、GUI
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class GUI {
private JFrame frame = new JFrame();
private DefaultTableModel model = new DefaultTableModel();
private JTable table = new JTable(model);
private JScrollPane pane = new JScrollPane(table);
public GUI()
{
model.addColumn("Name");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(pane);
frame.pack();
frame.setVisible(true);
}
public void addRow(String name)
{
model.addRow(new Object[]{name});
}
}
私は OS X 用に開発しており、アプリケーションを特定のファイル タイプ (たとえば ) に関連付ける必要があるため、Apple Jar Bundlerを使用してファイル.jarbundlerproblem
をバンドルする必要があります。私はこれを成功させました。アプリケーションが開き、10 までカウントし、1 秒ごとに書き込みます。JAR
APP
さて、問題ですが
デフォルトでは、 をダブルクリックし.jarbundlerproblem
てファイルをアプリケーションに関連付けても、ダブルクリックしたファイルは引数としてアプリケーションに渡されません。どうやら、これは OS X で動作する Java にすぎません。
どのファイルがダブルクリックされたかを確認する必要があるため、Apple が作成した Java ライブラリであるOSXAdapterを使用しています。これは、Controller
クラスのコンストラクターを変更して実装し、別のメソッドを追加しましたregisterForMacOSXEvents()
。
public Controller()
{
registerForMacOSXEvents();
//doWork(null);
}
public void registerForMacOSXEvents() {
try {
OSXAdapter.setFileHandler(this, getClass().getDeclaredMethod("doWork", new Class[] { String.class }));
} catch (Exception e) {
System.err.println("Error while loading the OSXAdapter:");
e.printStackTrace();
}
}
しかし、この (マイナーな) 変更の後、私のアプリケーションは動作し始めます。コンソールで開始したばかりであることがわかりますが(書かれています)、開かないことがありますがInitializing controller
、数回試行した後、最終的には開始しますが、最初の10秒間はウィンドウが完全に空白になり、その後、10 行が追加されます。
ヘルプ
今、私はこれにかなり苦労しました.OSXAdapterとJar Bundlerのどちらに関するドキュメントもあまりないようです. 私は何を間違っていますか?それとも、そもそも OSXAdapter や Jar Bundler を使用するべきではありませんか?