Java固定元素';s位置

Java固定元素';s位置,java,Java,我需要建立21点游戏作为一个研究项目 我想用SWING GUI构建它。我所需要的只是将屏幕分成两部分,然后能够使用相对于指定部分的绝对(x,y)位置插入元素(在我的例子中,它是带有签名图像图标的扩展JButton) 诸如此类: 我是在安卓系统下开发的,在安卓系统中,你可以用非常简单的方式处理元素,我觉得在SWING中迷失了方向。没有绝对的布局或类似的东西 以下是我多次尝试的一个例子: public void run() { // TODO Auto-generated meth

我需要建立21点游戏作为一个研究项目

我想用SWING GUI构建它。我所需要的只是将屏幕分成两部分,然后能够使用相对于指定部分的绝对(x,y)位置插入元素(在我的例子中,它是带有签名图像图标的扩展JButton)

诸如此类:

我是在安卓系统下开发的,在安卓系统中,你可以用非常简单的方式处理元素,我觉得在SWING中迷失了方向。没有绝对的布局或类似的东西

以下是我多次尝试的一个例子:

    public void run() {
    // TODO Auto-generated method stub
    JFrame  jFrame = new JFrame("Blackjack");
    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Container pane = jFrame.getContentPane();
    Insets insets = pane.getInsets();
    
    URL url = ClassLoader.getSystemClassLoader().getResource("10_of_clubs.png");
    
    BufferedImage bi = null;
    try {
        bi = ImageIO.read(url);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
    Image resizedImage = bi.getScaledInstance(128, 186, 0);
    
    ImageIcon icon = new ImageIcon(resizedImage);
    
    ImageButton imgButton = new ImageButton(icon);
    imgButton.setPreferredSize(new Dimension(128, 186));

    ImageButton imgButton2 = new ImageButton(icon);
    imgButton.setPreferredSize(new Dimension(128, 186));
    
    pane.setLayout(new GridBagLayout());
    
    JPanel headPanel = new JPanel();
    JPanel headPanel2 = new JPanel();
    
    GridBagConstraints cns = new GridBagConstraints();
    cns.gridx = 0;
    cns.gridy = 0;
    cns.weightx = 0.5;
    cns.weighty = 0.2;
    cns.anchor = GridBagConstraints.FIRST_LINE_START;
    cns.fill = GridBagConstraints.BOTH;        
    headPanel.setBackground(Color.RED);
    
    headPanel.add(imgButton, cns);
    
    GridBagConstraints cns2 = new GridBagConstraints();
    cns2.gridx = 0;
    cns2.gridy = 0;
    cns2.weightx = 0.5;
    cns2.weighty = 0.2;
    cns2.anchor = GridBagConstraints.FIRST_LINE_START;
    cns2.fill = GridBagConstraints.CENTER;        
    headPanel2.setBackground(Color.BLUE);
    
    headPanel2.add(imgButton2, cns2);
           
    pane.add(headPanel);
    pane.add(headPanel2);
    

    jFrame.setSize(800, 600);
    jFrame.setVisible(true);
    jFrame.setLocationRelativeTo(null);
}
这就是我得到的:


Tnx.

如果您想要绝对布局,请查看: 一般来说,要阅读java中的布局,您可以查看: 以下是所有java swing组件:视觉指南:


我认为您可以使用JSplitPane()创建垂直分隔

,因为您有重叠的元素,您可以:

  • 将现有的JButtons与图像一起使用。将卡放在不同的图层上,以获得清晰的渲染效果。使用“setBounds()”设置卡的绝对位置

  • 使用画布绘制具有绝对位置的卡。如果您采用这种方法,您还必须自己进行点击处理(检查点击是否在卡中)