javaアプリのswingに関する質問です
始めて投稿させていただきます。
現在、javaアプリケーションのswingを利用し、ボタンを押したら画像が表示され、ウエイトの時間を過ぎると自動的に画像が消え、またボタンが表示され・・・を繰り返すプログラムを作っています。
ですが、色々なサイトを拝見させていただき、修正を加えたのですが思うように動いてくれません。
そこで、皆様のお知恵を拝借出来ればと思い投稿させていただきました。
下記にソースコードを記載しております。
すべてのソースコードを記載しておりますので長くなっております。
また最終的には、50個前後のボタン、画像の拡大等を行う予定です。
長文になりますがアドバイスをいただけましたら幸いです。
-----------以下ソースコード--------------------
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.*;
class Test extends JPanel implements ActionListener{
static JFrame frame = new JFrame();
JButton bt1;
JButton bt2;
JPanel pn1 = new JPanel();
Dimension dim = this.getToolkit().getScreenSize();
int eventNo = -1;
public Test() {
frame.setTitle("これ");
frame.setUndecorated(true);
frame.setBounds(0, 0, 640, 480);
btStart();
pn1.setLayout(new FlowLayout());
frame.add(pn1);
frame.setVisible(true);
}
public void btStart(){
bt1 = new JButton("テスト");
bt2 = new JButton("終了");
pn1.add(bt1);
pn1.add(bt2);
bt1.addActionListener(this);
bt2.addActionListener(this);
}
// ボタン消去メソッド
public void btFormat(){
frame.remove(pn1);
bt1 = null;
bt2 = null;
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand() == "テスト") {eventNo = 1;}
if(e.getActionCommand() == "終了") {eventNo = 46;}
repaint();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
if(eventNo == 46){
System.exit(0);
}else if(eventNo == -1){
g2.clearRect(0, 0, 640, 480);
}else if(eventNo >= 0){
eventNo = -1;
btFormat();
try{
g2.drawImage(ImageIO.read(new File("./image/001.jpg")), 0, 0, this);
frame.add(this);
sleep(100);
g2.clearRect(0, 0, 640, 480);
btStart();
pn1.setLayout(new FlowLayout());
frame.add(pn1);
}catch(Exception e){
System.out.println(e);
}
}
}
// ウェイトを掛けるメソッド
public synchronized void sleep(long msec) {
for(int i=0; i<=msec; i++){
try {
wait(1);
}
catch(InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0); }
});
frame.getContentPane().add( new Test() );
}
}
お礼
解答有難う御座います ヒント有難う御座います 参考にさせて戴きます