gpt4 book ai didi

java - 为什么此代码不会在底部显示三个按钮的滚动 Pane 内显示内容

转载 作者:太空宇宙 更新时间:2023-11-04 09:41:26 25 4
gpt4 key购买 nike

我已将 JFrame 设置为在 View 类末尾可见,但不确定为什么我的自定义 JPanel 仍然不可见。我正在尝试简化代码并避免使用庞大的 View 类,同时实现良好的面向对象编程风格。我的主面板中 JFrame 底部的 JButton 是可见的。我尝试将自定义面板添加到框架中,但它们仍然不可见。

我尝试将所有内容设置为可见,并且仅将自定义 JPanel 添加到 JFrame 中。

public View(Main pMain) 
{
setMain(pMain);

panelClientInfo = new JClientPanel();
panelPaymentInfo = new JPaymentPanel();
panelJobDescription = new JJobPanel();
panelAgreement = new JAgreementPanel();
clearButton = new JButton("Clear");
exitButton = new JButton("Exit");
submitButton = new JButton("Submit");
panelSecondary = new JPanel();
panelMain = new JPanel();
scrollPane = new JScrollPane(panelMain);

panelSecondary.setLayout(new BoxLayout(panelSecondary,
BoxLayout.Y_AXIS));
panelSecondary.add(panelClientInfo);
panelSecondary.add(panelJobDescription);
panelSecondary.add(panelPaymentInfo);
panelSecondary.add(panelAgreement);
panelMain.add(panelSecondary, BorderLayout.CENTER);
panelMain.add(clearButton, BorderLayout.SOUTH);
panelMain.add(submitButton, BorderLayout.SOUTH);
panelMain.add(exitButton, BorderLayout.SOUTH);
scrollPane.add(panelMain);
scrollPane.setVisible(true);


setTitle("G.C. Septic Services Contract Drafter");
setSize(1000, 1000);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(scrollPane);

setVisible(true);


}

/**Here is a custom JPanel that I am trying to use*/
package contractDrafter;
import javax.swing.JPanel;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class JAgreementPanel extends JPanel
{
JPanel panelMain;
JLabel submitterLabel;
JTextField submitterText;

public JAgreementPanel()
{
panelMain = new JPanel();
panelMain.setLayout(new BoxLayout(panelMain, BoxLayout.Y_AXIS));
submitterLabel = new JLabel("Submitter Name: ");
submitterText = new JTextField("e.g: Calvin M. Cox", 30);

panelMain.add(Box.createVerticalGlue());
panelMain.add(submitterLabel);
panelMain.add(Box.createVerticalGlue());
panelMain.add(submitterText);
panelMain.add(Box.createVerticalGlue());
}

}

我希望这个程序显示不同的 JPanel,这样我的岳母所要做的就是在已完成的程序中输入一些值,它就会为她写入文件,以减少她患有关节炎的手的工作量。我希望看到 JPanel 以半整齐到整齐的方式最终出现在框架上,以便她可以在框架上上下滚动并输入必要的信息。

最佳答案

你的代码包含很多缺失的类!当您发布代码时,至少要使用父类(super class),这样我们才能了解它是怎么回事。

无论如何

I have tried to just add the custom panels to the frame but they still are not visible.

这确实与你的代码冲突!在代码中

panelMain.add(panelSecondary, BorderLayout.CENTER);
panelMain.add(clearButton, BorderLayout.SOUTH);
panelMain.add(submitButton, BorderLayout.SOUTH);
panelMain.add(exitButton, BorderLayout.SOUTH);

您传递的约束属于 BorderLayout,另一方面,您尚未将布局设置为 BorderLayout,因此默认情况下它是 FlowLayout

即使是 BorderLayout 添加相同的“边框”也会覆盖该边框中的最后一个组件!

您还没有上传图像,但我可以想象按钮在中心水平对齐,这是因为 JPanel 的默认 FlowLayout 布局。

I am hoping to see the JPanels end up on the frame in a semi-neat to neat way so that she can scroll up and down on the frame and enter the necessary information.

好吧,您正在使滚动 Pane 包含面板和按钮,这是完全错误的(至少在您的设计情况下)。

你应该做的是这样的

JFrame f = new JFrame();
JPanel slidingPanel = new JPanel ();
slidingPanel.setLayout(new BoxLayout(slidingPanel,BoxLayout.Y_AXSIS));
JScrollPane scrollPane = new JScrollPanel (slidingPanel);
f.getContentPane().add(scrollpane,BorderLayout.CENTER);
//then add all of your panels in the slidingpanel
JPanel buttonPanel = new JPanel();
//i can't give you a hint on this , it's almost just designer choice for how you want your buttons to layout
//but add them to the south !!
f.getContentPane().add(buttonPanel,BorderLayout.SOUTH);

如果您仍然需要一些额外的帮助来为您的家人处理您的项目,我很乐意为您提供帮助,但 Stack Overflow 不适合您,请在私有(private) github 存储库中上传您的项目,或者如果您已经有一个邀请我的项目,我的帐户的详细信息与我在这里的帐户相同;)。

关于java - 为什么此代码不会在底部显示三个按钮的滚动 Pane 内显示内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55940980/

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