Create Scroll Bar for JFrame

余生长醉 提交于 2020-01-16 01:06:12

问题


Hi I am trying to create Scroll Bar for my JFrame. I created JPanel object and set components into JPanel. Then created a JScrollPane object for the panel. Then add the ScrollPane object to JFrame. I am not seeing any scrollbar. Also I am wondering if there is a option in JPanel that would resize the object inside Jpanel automatically according to the zoom level of the JPanel. Any help would be highly appreciated.

public class xmlottgui {

private JPanel Container;

private JFrame frmCreateXml;

private JTextField titlename;
private JLabel lbltitlename;

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                xmlottgui window = new xmlottgui();
                window.frmCreateXml.setVisible(true);

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public xmlottgui() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {

    Container = new JPanel();
    Container.setLayout(null);

    //JScrollPane pane=new JScrollPane(Container,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);



    frmCreateXml = new JFrame();
    frmCreateXml.setTitle("Create XML");
    frmCreateXml.setBounds(100, 100, 1000, 1200);
    frmCreateXml.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frmCreateXml.getContentPane().setLayout(null);

    //Create MenuBar
    JMenuBar menuBar = new JMenuBar();
    Container.add(menuBar);

    JMenu mnFile = new JMenu("File");
    menuBar.add(mnFile);

    JMenuItem mntmImportFromCsv = new JMenuItem("Import From Excel File");  
    //Add menu item Exit
    JMenuItem mntmexit = new JMenuItem("Exit");
    mntmexit.addActionListener(new ActionListener() { 
        public void actionPerformed(ActionEvent event) {
            System.exit(0);
        } 
    }); 
    mnFile.add(mntmexit);

    showform();

    JScrollPane pane=new JScrollPane(Container,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    pane.setLayout(null);
    frmCreateXml.setContentPane(pane);
    frmCreateXml.getContentPane().add(pane);

}

private void showform(){

    titlename = new JTextField();
    titlename.setBounds(164, 27, 749, 26);
    Container.add(titlename);
    titlename.setColumns(10);

    lbltitlename = new JLabel("Title Name");
    lbltitlename.setBackground(Color.GRAY);
    lbltitlename.setBounds(22, 1000, 90, 16);
    Container.add(lbltitlename);        
}

回答1:


This:

pane.setLayout(null);

Will completely disable your JScrollPane and prevent it from working as it will prevent the JScrollPane from displaying and manipulating its view port properly. JScrollPanes have there own very special layout manager, one you never want to muck with unless you are very clever and know what you're doing. As a general rule you should almost never use null layouts.

Also this is not correct:

  frmCreateXml.setContentPane(pane);
  frmCreateXml.getContentPane().add(pane);

You make pane the contentPane and then add pane to itself.


AND THIS is messing you up:

frmCreateXml.getContentPane().setLayout(null);

You will want to learn about and use the layout managers as it will make your life much easier.



来源:https://stackoverflow.com/questions/33113073/create-scroll-bar-for-jframe

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!