调整JFrame大小时缩放JPanel

时间:2018-06-02 12:22:22

标签: java swing

我有一个问题我想用Java编写游戏控制台的菜单,我使用了几个JPanel,我用frame.setContentPane(newMenu)更改; JPanel之间我现在想要的是,如果我放大JPFnel放大的JFrame,以便分辨率800x600中的JPanel仍然存在,但JFrame例如在分辨率1920x1080中。我希望像RetroGames左右两边都有黑色条纹,顶部和底部没有黑色条纹。

代码:JFrame

    frame = new JFrame(CGC_NAME + " [Version: " + CGC_VERSION + "]");
    frame.setSize(DISPLAY_WIDTH, DISPLAY_HEIGHT);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    frame.setResizable(false);
    frame.setVisible(true);

    frame.setLayout(null);
    displayPanel = new JPanel();
    displayPanel.setBounds(0,0, Menu.MENU_WIDTH, Menu.MENU_HEIGHT);
    frame.add(displayPanel);

    Menu.changeMenu(null, Menu.homeMenu);

    frame.setFocusable(true);
    frame.requestFocus();
    frame.addKeyListener(new Keyboard());

Code JPanel

    @Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    renderMenu(g);

    repaint();
}

protected abstract void runMenu();  
protected abstract void renderMenu(Graphics g);

public static void changeMenu(Menu oldMenu, Menu newMenu) {
    //CGC.frame.setContentPane(newMenu);

    if (oldMenu != null) {
        CGC.displayPanel.remove(oldMenu);
    }

    CGC.displayPanel.setLayout(new BorderLayout());
    CGC.displayPanel.add(newMenu, BorderLayout.CENTER);
    CGC.frame.revalidate();
    CGC.frame.repaint();
    newMenu.runMenu();
}

有人能帮助我吗? Cortablo

0 个答案:

没有答案