如何从上到下,从左到右给出JLabel定位

时间:2014-03-10 13:24:08

标签: java swing alignment jlabel imageicon

嗨我想设置jlabel的定位从上到下,从左到右,我该怎么做 我尝试了setlocation(),setsize()以及其他方法,但无法实现我想要的输出。

这是我的代码

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

public class TesstDemo1 extends JPanel {

    private static final int MAX = 20;
    private static final Font sans = new Font("SansSerif", Font.PLAIN, 16);
    private static final Border border =
            BorderFactory.createMatteBorder(4, 16, 4, 16, Color.black);
    private JLabel imageLabel = new JLabel();

    public TesstDemo1() {
        this.setLayout(new BorderLayout());
        ImageIcon image = new ImageIcon("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\a0.png");
        JLabel titleLabel = new JLabel(image, SwingConstants.CENTER);
        // titleLabel.setText("ImageSlider");
        titleLabel.setHorizontalAlignment(JLabel.CENTER);
        titleLabel.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 24));
        //   titleLabel.setBorder(border);
        this.add(titleLabel, BorderLayout.NORTH);
        imageLabel.setPreferredSize(new Dimension(800, 600));
        imageLabel.setBackground(Color.BLUE);
        imageLabel.setOpaque(true);
        imageLabel.setAlignmentX(LEFT_ALIGNMENT);
        JPanel imageConstrain = new JPanel(new FlowLayout(SwingConstants.LEFT));
        imageConstrain.add(imageLabel);
        imageLabel.setHorizontalAlignment(JLabel.LEFT);
        imageLabel.setBorder(border);
        this.add(imageLabel, BorderLayout.CENTER);
        // this.add(imageConstrain, BorderLayout.CENTER);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                TesstDemo1 go = new TesstDemo1();
                frame.add(go);
                frame.setTitle("ImageSlider");
                //  frame.setSize(400, 300);
                frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
                frame.setUndecorated(true);
                frame.setVisible(true);
            }
        });
    }
}

提前致谢

2 个答案:

答案 0 :(得分:0)

首先,您需要设置布局然后应用位置。一个应该工作的例子是将布局设置为边框布局,然后将JPanel放在相对于中心的位置,如果你不想要框架上的任何其他项目,它应该覆盖孔框架。框架类的示例代码:

this.setLayout(new BorderLayout());
this.add(new JPanel(), BorderLayout.Center);

答案 1 :(得分:-1)

如果没有LayoutManager,则可以执行此操作。您必须将layoutmanager设置为null。使用setBounds设置JComponent的位置并调用repaint。有关更多信息,请查看http://docs.oracle.com/javase/tutorial/uiswing/layout/none.html