キオスクタイプの環境に展開された Firefox 18.0.1 を使用して、署名付きアプレットを実行しています。JDK と JRE はどちらも JavaSE 7u11 です。署名された jar を使用すると、サンドボックス化されたアプレットでは通常ユーザーに対して実行できないすべてのことを実行できます (ローカル ディスクをさまよう、プリンターと通信する、すべての pr0n を盗むなど)。
アプレットとそれをロードするページが共謀して HTML と JavaScript を生成します。JavaScript とアプレットは、ほぼシームレスな方法でやり取りします。アプレットがポップアップ ダイアログを作成することがあります。これらは、ユーザーが Java コンポーネントをクリックすることによってトリガーされるか、アプレットにダイアログを作成するように指示する「onclick」スクリプトを含む HTML ウィジェットをクリックすることによってトリガーされます。
先週、アプレットのポップアップ ダイアログのいくつかに問題があることに気付きました。ダイアログ ボックスの外に小さな警告アイコンがぶら下がっています。
ユーザーがアイコンを移動すると、アイコンはダイアログに接着されます。アイコンにカーソルを合わせると、小さな「Java アプレット ウィンドウ」ツールチップが表示されます。これは、すべてのダイアログが一緒に表示されるわけではないため、特に興味深いものです。
そのスナップショットに示されているウィンドウは、このテスト コードで作成されました。(はい、JOptionPane を使用するより短い方法がありますが、実際のコードを複製することはできません。一部のダイアログは他のダイアログよりもカスタマイズされています。)
import java.awt.BorderLayout;
import javax.swing.JApplet;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class WhereTheHellDoesTheIconComeFrom
{
private JPanel topPanel;
public WhereTheHellDoesTheIconComeFrom (JApplet applet) {
// Multiple panels with a text blob in each
JLabel exampleText = new JLabel ("some text here", JLabel.CENTER);
topPanel = new JPanel (new BorderLayout(5,0));
topPanel.add (exampleText, BorderLayout.CENTER);
// Create the options pane.
Object allpanels[] = new Object[] {
topPanel,
};
Object buttons[] = { "B1", "B2" };
JOptionPane optionPane = new JOptionPane (allpanels,
JOptionPane.PLAIN_MESSAGE,
JOptionPane.OK_CANCEL_OPTION,
null, // no icon built in
buttons,
buttons[0]); // select this button by default
// Ask it for the visible popup.
JDialog dialog = optionPane.createDialog(
SwingUtilities.getWindowAncestor(applet),
"This is the title text");
dialog.setResizable(false);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.pack();
dialog.setLocationRelativeTo(null);
dialog.setVisible(true);
// Modal dialog blocks on the previous line; at this point I can
// examine getValue() and make decisions, etc, etc.
}
}
何かが明らかになるかもしれないと期待して、私は約1時間Googleに寄り添いましたが、これについての言及は見つかりませんでした. これは Firefox のことですか、それとも JRE のことですか? または、より良い質問: 一部のダイアログでは警告アイコンが表示され、他のダイアログでは表示されない原因は何ですか?