我尝试过许多不同的方法,但我将解释两种方法以及发生了什么(没有错误消息或任何东西,只是没有显示出它们应该出现的样子,或者根本没有出现):
首先,我创建了一个名为JPanel的布局,并将其设置为BorderLayout。下面是我如何使它看起来的一个片段:
JPanel layout = new JPanel();
layout.setLayout(new BorderLayout());
colorChoice = new JLabel("Choose your color: ");
layout.add(colorChoice, BorderLayout.NORTH);
colorBox = new JComboBox(fireworkColors);
colorBox.addActionListener(this);
layout.add(colorBox, BorderLayout.NORTH);在这种情况下,它们根本不出现。它只会继续我添加的其他任何东西。
然后我尝试了setLayout(新的BorderLayout());下面是该代码的一个片段:
setLayout(new BorderLayout());
colorChoice = new JLabel("Choose your color: ");
add(colorChoice, BorderLayout.NORTH);
colorBox = new JComboBox(fireworkColors);
colorBox.addActionListener(this);
add(colorBox, BorderLayout.NORTH); 但是,在这个场景中,宽度占用了整个框架的宽度,而textfield (没有显示在代码片段中)基本上占用了其他所有内容。
下面是我尝试过的: setPreferredSize() & setSize()
还有什么是我遗漏的吗?谢谢。
我还应该指出,这是一个单独的类,在这个类中没有main。我这么说只是因为我扩展了JPanel而不是JFrame。我见过一些人扩展JFrame并使用JFrame,但我还没有尝试过。
发布于 2015-11-11 21:06:20
下面是一个具有JPanel的BorderLayout示例,该示例将带有按钮和标签的JPanel添加到"North“
public class Frames extends JFrame
{
public Frames()
{
JPanel homePanel = new JPanel(new BorderLayout());
JPanel northContainerPanel = new JPanel(new FlowLayout());
JButton yourBtn = new JButton("I Do Nothing");
JLabel yourLabel = new JLabel("I Say Stuff");
homePanel.add(northContainerPanel, BorderLayout.NORTH);
northContainerPanel.add(yourBtn);
northContainerPanel.add(yourLabel);
add(homePanel);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
setExtendedState(JFrame.MAXIMIZED_BOTH);
setTitle("Cool Stuff");
pack();
setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(Frames::new);
}
}https://stackoverflow.com/questions/33659247
复制相似问题