ユーザーが比較できるように複数の画像を表示する必要がありますが、どの方法を使用すればよいかわかりません。ユーザーが画像ファイルを選択できるようにするアプリがあるので、ファイル オブジェクトがあります。「new」で新しい GUI を生成しようとしましたが、うまくいきません。
スタンドアロン アプリ (メインを使用) をコーディングし、システム コールを使用して新しい JVM で起動する必要がありますか? 私は Java の初心者で、AWT と SWING の表面に触れたばかりです。
このクラスは次のように呼び出されます。名前は任意の一意の文字列です。
ImageWindowStub iw = new ImageWindowStub(name);
連続して呼び出された場合の問題を示す簡単なコードを次に示します。
package fireScience.airborne.image;
import java.awt.Dimension;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.BevelBorder;
public class ImageWindowStub {
private static JFrame frame;
private static JPanel statusPanel;
private static JLabel statPixInfoLbl;
private static String theString;
public ImageWindowStub(String theString) {
this.theString = theString;
statusPanel = new JPanel();
createAndShowGui();
}
private static void createAndShowGui() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
frame = new JFrame(theString);
JFrame.setDefaultLookAndFeelDecorated(true);
frame.setResizable(true);
frame.setSize(300, 200);
frame.setLocation(50, 50);
statusPanel = new JPanel();
statusPanel.setBorder(new BevelBorder(BevelBorder.LOWERED));
statusPanel.setPreferredSize(new Dimension(frame.getWidth(), 24));
statusPanel.setLayout(new BoxLayout(statusPanel,
BoxLayout.X_AXIS));
statPixInfoLbl = new JLabel("Status Bar");
statPixInfoLbl.setHorizontalAlignment(SwingConstants.LEFT);
statusPanel.add(statPixInfoLbl);
frame.add(statusPanel);
frame.pack();
frame.setVisible(true);
}
});
}
}
私の中心的な質問は、「GUI クラスの複数の独立したインスタンスを生成する最良の方法は何ですか?」です。