简体   繁体   中英

why does my button not appear on my JPanel - Java

Or maybe my JPanel is not appearing at all.

I am trying to have a JPanel at the bottom of the screen that hold several buttons. Can someone set me strait?

public class MyAWTMenu extends java.awt.Frame// implements ActionListener 
{
public void init() { 
setBackground( Color.white );
JPanel bottom = new JPanel();
    bottom.setBackground(Color.BLACK);
    JButton b1 = new JButton("test");
 b1.setVisible(true);
    bottom.add(b1);
    bottom.setVisible(true);
    add(bottom,BorderLayout.CENTER);
}
public static void main( String args [] ) {

    MyAWTMenu objAppFrame = new MyAWTMenu();

    objAppFrame.addWindowListener(      //Register an anonymous class as a listener.
         new WindowAdapter() {
            public void windowClosing( WindowEvent e ) 
            {  
               System.exit( 0 );
            }
         }
    );
    objAppFrame.init();
    objAppFrame.setSize( 760, 378);
    objAppFrame.setVisible( true );                    

  }

I'd better rewrite it as follows:

public class FooFrame extends JFrame {

    public FooFrame() {

        // your code, copy/pasted
        setBackground(Color.white);
        JPanel bottom = new JPanel();
        bottom.setBackground(Color.BLACK);
        JButton b1 = new JButton("test");
        bottom.add(b1);
        add(bottom, BorderLayout.CENTER);

        // set size & pack
        Dimension size = new Dimension(400, 400);
        setPreferredSize(size);
        setMinimumSize(size);
        pack();
        setLocationRelativeTo(null);
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new FooFrame().setVisible(true);
            }
        });
    }
}

add(bottom,BorderLayout.SOUTH); in your init()

Here's your code that i was running. It seems to work fine for me. I did add a call to pack();


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JPanel;

public class MyAWTMenu extends java.awt.Frame// implements ActionListener
{

    public void init() {
        setBackground(Color.white);
        JPanel bottom = new JPanel();
        bottom.setBackground(Color.BLACK);
        JButton b1 = new JButton("test");
        bottom.add(b1);
        bottom.setVisible(true);
        add(bottom, BorderLayout.SOUTH);
        pack();
    }

    public static void main(String args[]) {

        MyAWTMenu objAppFrame = new MyAWTMenu();

        objAppFrame.addWindowListener( //Register an anonymous class as a listener.
                new WindowAdapter() {

            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        objAppFrame.init();
        objAppFrame.setSize(760, 378);
        objAppFrame.setVisible(true);

    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM