Java 无法减少网格布局中JLabel之间的垂直间距
我正在为我的客户创建一个配置文件界面。但是,当我在网格布局中指定像素数时,它似乎不起作用。我试图降低我的jlabel的高度,但也没有任何效果 还有,我如何增加jlabel和JPanel之间的填充。 多谢各位 更新:我尝试将背景图像添加到JPanel,而不是添加到JLabel。现在的问题是,宽度和高度没有生效。它只是显示了我的背景图像中很长很薄的一部分Java 无法减少网格布局中JLabel之间的垂直间距,java,swing,user-interface,layout-manager,grid-layout,Java,Swing,User Interface,Layout Manager,Grid Layout,我正在为我的客户创建一个配置文件界面。但是,当我在网格布局中指定像素数时,它似乎不起作用。我试图降低我的jlabel的高度,但也没有任何效果 还有,我如何增加jlabel和JPanel之间的填充。 多谢各位 更新:我尝试将背景图像添加到JPanel,而不是添加到JLabel。现在的问题是,宽度和高度没有生效。它只是显示了我的背景图像中很长很薄的一部分 public CustomerProfile() { super("Customer Profile"); setLayout
public CustomerProfile()
{
super("Customer Profile");
setLayout(new BorderLayout());
//BACKGROUND IMAGE OF THE PROFILE JPANEL
ImageIcon backgroundImg= new ImageIcon("background.jpg");
//background = new JLabel("",background_img,JLabel.CENTER);
//background.setLayout(new BorderLayout());
//PROFILE DETAILS JPANEL
jpProfile = new JPanel() {
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(backgroundImg.getImage(),0,0,450,775,null);
}
};
add(jpProfile, BorderLayout.WEST);
//jpProfile.add(background);
/*//PROFILE ICON
ImageIcon profImg = new ImageIcon("female.png");
jlProfileIcon = new JLabel("",profImg,JLabel.CENTER);
//ADDING PROFILE ICON TO JLABEL background
background.add(jlProfileIcon,BorderLayout.NORTH);
//DEFINING FONT
standardFont = new Font("Serif",Font.BOLD,20);
//JLABELS FOR PROFILE INFO
jlCusName = new JLabel("Name: ");
jlCusName.setFont(standardFont);
jlCusName.setForeground(Color.WHITE);
jlCusAddr = new JLabel("Address: ");
jlCusAddr.setFont(standardFont);
jlCusAddr.setForeground(Color.WHITE);
jlCusEmail = new JLabel("Email: ");
jlCusEmail.setFont(standardFont);
jlCusEmail.setForeground(Color.WHITE);
jlCusPhone = new JLabel("Phone: ");
jlCusPhone.setFont(standardFont);
jlCusPhone.setForeground(Color.WHITE);
jlCusProblem = new JLabel("Problems: ");
jlCusProblem.setFont(standardFont);
jlCusProblem.setForeground(Color.WHITE);
//JPANEL FOR PROFILE INFO
jpProfileInfo = new JPanel();
jpProfileInfo.setLayout(new GridLayout(5,1,0,0));
jpProfileInfo.setOpaque(false);
//ADDING JLABELS TO JPANEL
jpProfileInfo.add(jlCusName);
jpProfileInfo.add(jlCusAddr);
jpProfileInfo.add(jlCusEmail);
jpProfileInfo.add(jlCusPhone);
jpProfileInfo.add(jlCusProblem);
//ADDING JPANEL TO background JLABEL
background.add(jpProfileInfo,BorderLayout.WEST);
*/
}
public static void main(String[] args)
{
CustomerProfile cp = new CustomerProfile();
cp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cp.setSize(900,775);
cp.setVisible(true);
}
}
但是,当我在网格布局中指定像素数时,它似乎不起作用
对。GridLayout将展开/收缩以填充可用空间
因此,您可以使用包装器面板:
JPanel labelPanel = news JPanel( new GridLayout(…) );
labelPanel.add(…);
JPanel wrapperPanel = new JPanel( new BorderLayout() );
wrapperPanel.add(labelPanel, BorderLayout.PAGE_START); // now the height is respected
background.add(wrapperPanel, BorderLayout.LINE_START); // now the width is respected
考虑使用<代码> GridBaLayout <代码>,一个工作示例会让我们更容易看到问题。如果您不熟悉使用Swing进行布局,我还建议您尝试使用图形编辑器,如eclipse的免费“窗口生成器”或Netbeans designer。使用可视化编辑器来摆弄布局要容易得多。1)为了更快地获得更好的帮助,可以添加或。硬编码数据以替换数据库。2) 例如,获取图像的一种方法是热链接到中看到的图像。例如,嵌入到中的图像的热链接。3) 提供最小尺寸的ASCII艺术或GUI预期布局的简单绘图,如果可调整大小,则具有更大的宽度和高度-…要实现第5点,请在自定义绘制的
JPanel
中绘制背景图像。实施第1-4点以获得更多帮助。那么我应该如何着手解决此问题您在上一个问题中已经得到了该建议:。您是否按照“背景面板”的链接了解为什么它是更好的方法?