gpt4 book ai didi

Java GUI 全屏窗口,内部窗口较小

转载 作者:行者123 更新时间:2023-12-01 11:51:58 25 4
gpt4 key购买 nike

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

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

  1. 主窗口占据整个屏幕尺寸(图像位于背景)
  2. 内部窗口 800 x 600 位于主窗口中央窗口(保存当前内容,可以在在应用程序中使用菜单和/或事件。

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);
}

}

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

最佳答案

好的,我刚刚运行了一个测试程序,并达到了您正在寻找的结果。我使用了 GridBagLayout,它默认以它添加到的容器为中心。它不会与 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 中的位置)。实现你想要的东西的方法有很多种,但这实际上取决于你觉得什么好看。布局管理器将为您完成所有调整大小的工作。

关于Java GUI 全屏窗口,内部窗口较小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28730643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com