我正在研究Java桌面应用程序。它使用MySQL数据库存储所有数据等。我使用swing作为GUI。
此应用程序的GUI布局如下:
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);
}
}
我应该使用盒子布局吗?有什么建议?
答案 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中的位置)。有很多方法可以达到你想要的效果,但这取决于你觉得什么样的好看。布局管理员将为您完成所有调整大小的工作。