Java 组件在框架中不可见

Java 组件在框架中不可见,java,swing,jframe,jpanel,layout-manager,Java,Swing,Jframe,Jpanel,Layout Manager,我正在尝试简单的Swing应用程序。我在面板中垂直添加了6个按钮,有4-5行间距,但当我执行程序时,并非所有按钮都可见。底部按钮不显示。我已经添加了滚动窗格功能,但它没有发生 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; imp

我正在尝试简单的Swing应用程序。我在面板中垂直添加了6个按钮,有4-5行间距,但当我执行程序时,并非所有按钮都可见。底部按钮不显示。我已经添加了滚动窗格功能,但它没有发生

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Rectangle;

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.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JToolBar;

public class Frame6 extends JFrame {
    private BorderLayout layoutMain = new BorderLayout();
    private JPanel panelCenter = new JPanel();
// private JScrollPane  panel1 = new JScrollPane(panel);
    private JMenuBar menuBar = new JMenuBar();
    private JMenu menuFile = new JMenu();
    private JMenuItem menuFileExit = new JMenuItem();
    private JToolBar toolBar = new JToolBar();
    private JButton buttonOpen = new JButton();
    private JButton buttonClose = new JButton();
    private JButton buttonHelp = new JButton();
    private ImageIcon imageOpen = new ImageIcon(Frame6.class.getResource("openfile.gif"));
    private ImageIcon imageClose = new ImageIcon(Frame6.class.getResource("closefile.gif"));
    private ImageIcon imageHelp = new ImageIcon(Frame6.class.getResource("help.gif"));
    private JButton jButton1 = new JButton();
    private JButton jButton2 = new JButton();
    private JButton jButton3 = new JButton();
    private JButton jButton4 = new JButton();
    private JButton jButton5 = new JButton();
    private JButton jButton6 = new JButton();

    public Frame6() {
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void jbInit() throws Exception {
        this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        this.setVisible(true);
        this.setJMenuBar( menuBar );
        this.getContentPane().setLayout( layoutMain );
        panelCenter.setLayout( null );
        this.setSize(new Dimension(401, 1100));
        menuFile.setText( "File" );
        menuFileExit.setText( "Exit" );
        menuFileExit.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent ae ) { fileExit_ActionPerformed( ae ); } } );
        buttonOpen.setToolTipText( "Open File" );
        buttonOpen.setIcon( imageOpen );
        buttonClose.setToolTipText( "Close File" );
        buttonClose.setIcon( imageClose );
        buttonHelp.setToolTipText( "About" );
        buttonHelp.setIcon( imageHelp );
        jButton1.setText("jButton1");
        jButton1.setBounds(new Rectangle(45, 75, 160, 20));
        jButton2.setText("jButton2");
        jButton2.setBounds(new Rectangle(40, 200, 185, 20));
        jButton3.setText("jButton3");
        jButton3.setBounds(new Rectangle(45, 390, 210, 20));
        jButton4.setText("jButton4");
        jButton4.setBounds(new Rectangle(35, 590, 175, 20));
        jButton5.setText("jButton5");
        jButton5.setBounds(new Rectangle(30, 755, 200, 20));
        jButton6.setText("jButton6");
        jButton6.setBounds(new Rectangle(55, 945, 190, 20));
        menuFile.add( menuFileExit );
        menuBar.add( menuFile );
        toolBar.add( buttonOpen );
        toolBar.add( buttonClose );
        toolBar.add( buttonHelp );
        this.getContentPane().add( toolBar, BorderLayout.NORTH );
        panelCenter.add(jButton6, null);
        panelCenter.add(jButton5, null);
        panelCenter.add(jButton4, null);
        panelCenter.add(jButton3, null);
        panelCenter.add(jButton2, null);
        panelCenter.add(jButton1, null);
        this.getContentPane().add( panelCenter, BorderLayout.CENTER );
    }

public static void main(String[] args) {
        new Frame6();
    }
    void fileExit_ActionPerformed(ActionEvent e) {
        System.exit(0);
    }
}

panelCenter.setLayout(null)
JavaGUI可能必须在多种平台上工作,使用不同的屏幕分辨率和不同的PLAF。因此,它们不利于部件的精确放置。为一个健壮的GUI而组织组件,或者,以及。
jButton1
到6的布局填充和边框在我运行代码时可见。我提交给@davideye的评论。如果我运行你的代码,我可以看到每个按钮。研究GridBagLayout。它为您提供了所需的所有灵活性。您可以将组件放置在所需的位置,并且在更改窗口大小时效果良好。阅读