Javaでアプリのようなウィザードを作成したいと思います。それぞれラベルと「次へ」ボタンを含む 3 つの異なるレイアウトでフレームを描画するところまで来ましたが、最初のフレームのボタンをクリックすると代わりに空のフレームが表示されます。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MainFrame extends JFrame implements ActionListener{
private BorderLayout layout;
public MainFrame() {
super("MyWizz");
setSize(500, 500);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLocationRelativeTo(null);
}
protected ImageIcon createImageIcon(String path,
String description) {
java.net.URL imgURL = getClass().getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL, description);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
public void DrawFirstPage(){
layout = new BorderLayout();
setLayout(layout);
ImageIcon icon = createImageIcon("/images/icon.png","desc");
add(new JLabel("text",icon,JLabel.CENTER),BorderLayout.CENTER);
JButton bn = new JButton("next");
add(bn,BorderLayout.PAGE_END);
setVisible(true);
bn.setActionCommand("goto2");
bn.addActionListener(this);
revalidate();
}
public void DrawBrowsePage(){
System.out.println(getContentPane().getComponentCount());
getContentPane().removeAll();
System.out.println(getContentPane().getComponentCount());
repaint();
revalidate();
layout = new BorderLayout();
JButton bn = new JButton("next");
add(new JLabel("text",JLabel.CENTER),BorderLayout.CENTER);
add(bn,BorderLayout.PAGE_END);
bn.setActionCommand("goto3");
bn.addActionListener(this);
setLayout(layout);
setVisible(true);
System.out.println(getContentPane().getComponentCount());
repaint();
revalidate();
}
public void DrawLoadingPage(){
getContentPane().removeAll();
repaint();
revalidate();
layout = new BorderLayout();
setLayout(layout);
setVisible(true);
JButton bn = new JButton("next");
add(new JLabel("text",JLabel.CENTER),BorderLayout.CENTER);
add(bn,BorderLayout.PAGE_END);
repaint();
revalidate();
}
public void actionPerformed(ActionEvent e) {
if("goto2".equals(e.getActionCommand())) DrawBrowsePage();
if("goto3".equals(e.getActionCommand())) DrawLoadingPage();
}
}
これらのいくつかの System.out.println 関数から、DrawBrowsePage() が実行され、古い要素が削除され、新しい要素が追加されていることがわかります。あなたが惜しまない助けをいただければ幸いです。
FAQ: いいえ、jwizz を使用できません。