gpt4 book ai didi

java - 如何使用 BorderLayout 将两个具有首选大小的标签添加到面板?

转载 作者:行者123 更新时间:2023-11-30 07:22:35 31 4
gpt4 key购买 nike

我正在尝试将标签添加到面板的北面和南面,并将面板添加到框架的中心。如果我自己不指定标签的大小,程序是完美的,但是当我给它们特定的尺寸时:

label.setPreferredSize(di);
label2.setPreferredSize(di);

变得凌乱了!然而,面板和框架的尺寸更大,(100,100)有什么想法吗?

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;


import javax.swing.JFrame;

public class BorderLayoutDemo2 {

public static void main(String args[])
{
Frame frame = new Frame();
}
}

class Frame extends JFrame
{

private static final long serialVersionUID = 1L;

public Frame(){
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Dimension di = new Dimension(50,50);
Dimension dim = new Dimension(200,200);

JPanel panel = new JPanel();
panel.setPreferredSize(dim);

JLabel label = new JLabel("Here is my label");
JLabel label2 = new JLabel("Here is my label2");



JMenuBar menu = new JMenuBar();
JMenu setting = new JMenu("Setting");
JMenuItem exit = new JMenuItem("Exit");
JMenuItem add = new JMenuItem("Add");
setting.add(add);
setting.add(exit);
menu.add(setting);

label.setPreferredSize(di);
label2.setPreferredSize(di);

panel.add(label,BorderLayout.NORTH);
panel.add(label2,BorderLayout.SOUTH);

add(menu,BorderLayout.NORTH);
add(panel,BorderLayout.CENTER);


pack();
setVisible(true);
}

}

最佳答案

当您添加组件时,您假设面板的布局是 BorderLayout,即:panel.add(label,BorderLayout.NORTH);。但是您没有设置布局,JPanel 使用 FlowLayout 这是它的 default .你可以这样修复它:

JPanel panel = new JPanel(new BorderLayout());

关于java - 如何使用 BorderLayout 将两个具有首选大小的标签添加到面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12594702/

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