Java GUI FullScreen窗口,内部窗口较小

时间:2015-02-25 22:10:54

标签: java swing user-interface

我正在研究Java桌面应用程序。它使用MySQL数据库存储所有数据等。我使用swing作为GUI。

此应用程序的GUI布局如下:

  1. 主窗口占据整个屏幕尺寸(图像在 背景)
  2. 内部窗口800 x 600位于Main内部 窗口(包含可在其间切换的当前内容 在应用程序中使用菜单和/或事件。
  3. LoginPanel.java:

    import javax.swing.*;
    import java.awt.*;
    
    public class LoginPanel {
    
        private JPanel loginPanel;
    
        public void loginForm()
        {
            JButton loginSubmit = new JButton("Login");
    
            loginPanel = new JPanel();
            loginPanel.add(loginSubmit);
            loginPanel.setSize(800, 600);
        }
    
        public JComponent getGUI() 
        {
            return loginPanel;
        }
    
        public static void main(String[] args)
        {
    
        }
    
    
    }
    

    Main.java:

    import javax.swing.*;
    import java.awt.*;
    
    public class Main {
    
        public static void main(String[] args)
        {
            JFrame mainFrame;
            mainFrame = new JFrame();
            mainFrame.setLayout(new BorderLayout());
            mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            mainFrame.setTitle("Caledonian Library System");     
            LoginPanel loginObj = new LoginPanel();
            mainFrame.add(loginObj.getGUI());
            mainFrame.pack();
            mainFrame.setVisible(true);      
        }
    
    }
    

    我应该使用盒子布局吗?有什么建议?

1 个答案:

答案 0 :(得分:1)

好的,我刚刚运行了一个测试程序,并且已经达到了你想要的结果。我使用了一个GridBagLayout,它默认以加入它的Container为中心。它不会显示JFrame中内置的边框或其他按钮(尽管您可以在以后添加边框)。

JFrame mainframe = new JFrame();
JPanel mainPanel = new JPanel();
GridBagLayout gridLayout = new GridBagLayout();
mainPanel.setLayout(gridLayout);

//GridBagConstraints allow you to set various features of the way the components appear
//in the grid. You can set this up as you wish, but defaults are fine for this example
GridBagConstraints gridConstraints = new GridBagConstraints();

//Just using FlowLayout as a test for now
JPanel centerPanel = new JPanel(new FlowLayout());
centerPanel.add(new JLabel("Hello"));
centerPanel.add(new JLabel("Centered"));

mainPanel.add(centerPanel, gridConstraints);

mainFrame.add(mainPanel);

如果您发现中心面板侧面的空间没有被使用,并且您希望它被使用,您可以尝试将mainPanel嵌套在另一个使用BorderLayout的面板中,确保它在BorderLayout.CENTER。

在这个示例中,我没有从默认情况下更改GridBagConstraints,因为这个演示没问题。但是,您可以根据需要进行编辑,然后应用于添加到GridBagLayout的每个组件,确保在每个mainPanel.add()中包含GridBagConstraints对象。查看GridBagLayout tutorials以获取一些有用的信息。

当然,如果你想在主窗口以外的中心有更多的组件,你可以简单地将它们添加到mainPanel(确保更改GridLayout中的位置)。有很多方法可以达到你想要的效果,但这取决于你觉得什么样的好看。布局管理员将为您完成所有调整大小的工作。