Java - ScrollPane上的JLabel-如何设置标签的位置?

时间:2017-06-10 19:25:46

标签: java swing jlabel

如何在特定位置设置标签?我想要连续一些,有些则在一列中。我试图用.setBorder设置它们(新的EmptyBorder(coordX,coordY,20,140));但似乎没有用。

这是代码(记得替换那些.png):

import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class Images extends JFrame {

    private JPanel contentPane;

    public static void main(String[] args) {
        new Images();
    }

    public Images() {
        setTitle("myTitle");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        contentPane = new JPanel(new BorderLayout());
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        JLabel lblNombreequipo = new JLabel("trying: ");
        lblNombreequipo.setBorder(new EmptyBorder(10, 40, 10, 10));
        contentPane.add(lblNombreequipo, BorderLayout.PAGE_START);
        JPanel scrollPanel = new JPanel(new GridLayout(0, 1, 0, 50));
        contentPane.add(new JScrollPane(scrollPanel,
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
        for (int i = 0; i < 50; i++) {

                JLabel myLabel1 = new JLabel(new ImageIcon("myImage1.png"));
                myLabel1.setBorder(new EmptyBorder(100, 100, 20, 140));
                scrollPanel.add(myLabel1);


                JLabel myLabel2 = new JLabel(new ImageIcon("myImage2.png"));
                myLabel2.setBorder(new EmptyBorder(300, 100, 20, 140));
                scrollPanel.add(myLabel2);

                JLabel myLabel3 = new JLabel(new ImageIcon("myImage3.png"));
                myLabel3.setBorder(new EmptyBorder(100, 100, 20, 140));
                scrollPanel.add(myLabel3);

        }
        pack();
        Dimension d = getSize();
        setSize(new Dimension(d.width, 250));
        setLocationByPlatform(true);
        setMinimumSize(getSize());
        setVisible(true); 
    }
}

1 个答案:

答案 0 :(得分:0)

  

如何在特定位置设置标签?

您可以有效地使用布局管理器。

JPanel scrollPanel = new JPanel(new GridLayout(0, 1, 0, 50));

这表示您需要一列组件。

阅读How to Use GridLayout上Swing教程中的部分,了解有关布局管理器如何工作的更多信息以及可以下载和使用的工作示例。

如果GridLayout不是您想要实现的目标,那么请查看教程中针对各种布局管理器的其他部分。也许正在寻找的GridBagLayout使用起来更复杂。

  

我试图用.setBorder设置它们(新的EmptyBorder(coordX,coordY,20,140));

这不是边境的用途。边框只是为组件添加了额外的空间。阅读How to Use Borders上Swing教程中的部分,了解更多信息和工作示例。