私はいくつかのオプションの1つを選択することができるGUIを作っています。これにはより多くのオプション(ボタン)があります。私はJavaでの経験がなく、何か問題があります。JFrameとJPanels
なぜthis.dispose()
Button11
をクリックした後に新しいJPanel
が開けないのですか?どうすれば新しいJPanel
を正確にPanel11
に開くことができますか?アドバイスをいただけますか?
class Panel1 extends JPanel
{
private Frame frame;
private JButton backButton;
private JButton Button11;
private JButton Button12;
private JButton Button13;
public Panel1(Frame f)
{
frame=f;
setPreferredSize(new Dimension(500,500));
backButton=new JButton("Back");
Button11=new JButton("Z warunkami atmosferycznymi");
Button12=new JButton("Z kontrolą ruchu lotniczego");
Button13=new JButton("Z uszkodzeniem/awarią");
add(new JLabel("Podczas lotu"));
add(backButton);
add(Button11);
add(Button12);
add(Button13);
backButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e){
frame.back(); }
}
);
Button11.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Panel11 panel = new Panel11();
panel.setVisible(true);
panel.setLocationRelativeTo(null);
this.dispose();
}
}
);
}
}
class Panel11 extends JPanel
{
private Frame frame;
private JButton backButton;
public Panel11(Frame f)
{
frame=f;
setPreferredSize(new Dimension(200,500));
backButton=new JButton("Back");
add(new JLabel("Podczas rotacji"));
add(backButton);
backButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
frame.back();
}
}
);
}
}
class Frame extends JFrame
{
private JPanel main;
private JButton button1;
private Panel1 panel1;
public Frame()
{
super("Algorytm przydziału kodów opóźnień");
main=new JPanel();
main.setPreferredSize(new Dimension(400,200));
panel1=new Panel1(this);
button1=new JButton("Podczas lotu");
button1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
update(panel1);
}
}
);
main.add(button1);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(main);
pack();
setResizable(true);
setVisible(true);
}
public void back()
{
update(main);
}
private void update(JPanel panel)
{
remove(panel1);
remove(main);
add(panel);
pack();
panel.setVisible(true);
setVisible(true);
}
}
public class Main
{
public static void main(String[] args)
{
new Frame();
}
}
あなたは何をしたいのかを明確にしてください:button11をクリックするとパネル11がJframeに表示されますか? – SteelToe
@ MarrieteCowby12あり – Szymsss
Java **はJavascriptではありません!タグを正しく使用してください!そして、あなたのコードを正しくインデントし、あなたの問題を実証する有効な[mcve](つまり、コード全体ではなく簡単な例)を投稿し、コピー&ペーストしてそれは私たちのPCに – Frakcool