【问题标题】:Image in JLabel array won't appear when added to JFrameJLabel数组中的图像添加到JFrame时不会出现
【发布时间】:2016-06-15 16:29:47
【问题描述】:

我有一个JLabel 数组,但是当一个图像附加到它并添加到我的容器中时,它不会出现在JFrame 上,这与非数组JLabels 不同。

我已尝试更改其覆盖的图像的不透明设置,将其设置为可见,并更改图像的布局。

我是 Stack Overflow 的新手,对 Swing 也比较陌生,因此欢迎所有批评。

import java.awt.Container;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Connect_Four extends JFrame {
    private static final long serialVersionUID = 1L;
    static JLabel[] piecelabel;
    static int piececounter;

    public Connect_Four(String title) {
        piececounter = 0;

        Container c = getContentPane();

        piecelabel = createLabels();
        piecelabel[piececounter].setIcon(new ImageIcon("F:/redpiece.jpg"));
        piecelabel[piececounter].setBounds(0, (750 - (counter[0] * 100)), 135, 100);
        c.add(piecelabel[piececounter]);
    }

    public JLabel[] createLabels() {
        JLabel[] labels = new JLabel[42]; //used for connect 4 pieces
        for (int i = 0; i < 42; i++) {
            labels[i] = new JLabel();
        }
        return labels;
    }
}

【问题讨论】:

标签: java arrays swing


【解决方案1】:

我不确定您的主要方法。但是下面的代码对我来说很好。你能检查一下,让我知道有什么不同吗?

import java.awt.Container;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Connect_Four extends JFrame {

    static JLabel[] piecelabel;
    static int piececounter;
    private static final long serialVersionUID = 1L;

    public Connect_Four(String title) {

        piececounter = 0;

        Container c = getContentPane();

        JLabel[] piecelabel = createLabels();
        piecelabel[piececounter].setIcon(
                new ImageIcon("C:/sunshine.png"));
        piecelabel[piececounter].setBounds(0, 0, 135, 100);
        c.add(piecelabel[piececounter]);
    }

    public JLabel[] createLabels() {
        JLabel[] labels = new JLabel[42]; //used for connect 4 pieces
        for (int i = 0; i < 42; i++) {
            labels[i] = new JLabel();
        }
        return labels;
    }

    public static void main(String[] args) {
       Connect_Four c = new Connect_Four("Example");
       c.setVisible(true);
       c.pack();
    }
}

【讨论】:

    【解决方案2】:

    你有没有让它在设置后调用方法 repaint() 可见

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      相关资源
      最近更新 更多