我对Java很新,但对C ++有一些经验。这是一项家庭作业,所以我真的只是想找人帮我指明正确的方向。
分配需要JFrame
JPanel
个对象,以13x4网格显示牌组中的每张牌。教授为我们提供了一些代码,以帮助我们开始:
import javax.swing.*;
import java.awt.*;
public class Main
public static void main(String[] args)
{
//load the card image from the gif file.
final ImageIcon cardIcon = new ImageIcon("cardImages/tenClubs.gif");
//create a panel displaying the card image
JPanel panel = new JPanel()
{
//paintComponent is called automatically by the JRE whenever
//the panel needs to be drawn or redrawn
public void paintComponent(Graphics g) {
super.paintComponent(g);
cardIcon.paintIcon(this, g, 20, 20);
}
};
//create & make visible a JFrame to contain the panel
JFrame window = new JFrame("Title goes here");
window.add(panel);
window.setPreferredSize(new Dimension(200,200));
window.pack();
window.setVisible(true);
}
}
我尝试了一些东西,但似乎无法显示多个面板。我应该使用gridLayout()
功能吗?或者只创建多个面板并在框架中指定每个面板的位置?
再次,如果有人能指出我正确的方向,那将是非常棒的。
答案 0 :(得分:1)
要显示相同大小的元素,均匀分布在容器中,那么是的,GridLayout
将是一个不错的选择。
如果您需要在网格中显示首选大小(每个组件可能不同),那么GridBagLayout
将是更好的选择
如果代码是由您的教授提供的,那么您需要返回并修复它。
首先,JLabel
会更容易,并为您要实现的目标提供更好的支持......
其次,因为JPanel
不会覆盖getPreferredSize
,所以大多数布局管理器会将组件的大小设置为0x0
答案 1 :(得分:-2)
有一种方法可以在一个JFrame中显示多个JPanel。不幸的是你的方式并不那么容易。 Java有许多不同的LayoutManagers。 为了您的目的,我建议使用GridBagLayout,它更复杂,但绝对是您需要的东西。 这是一个很好的教程,帮助我理解它:
希望这是一个帮助。