jlabel之间如何给空格?

用户3456343

嗨,我正在尝试使Java桌面应用程序在其中我使用多个jlabel的情况下,我想在每个标签之间留出很小的空间

我怎样才能做到这一点

这是我的代码

public class Second extends javax.swing.JFrame {
JLabel label=new JLabel();
    /**
     * Creates new form Second
     */
    public Second() {
          this.getContentPane().setBackground(new java.awt.Color(255, 140, 0));
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
this.setUndecorated(true);
JButton print= new JButton();
print.setBackground(new java.awt.Color(153, 153, 0));
            print.setOpaque(true);
            print.setBounds(525,1282,130,85);
            print.setFont(new java.awt.Font("Times New Roman", 1, 24)); // NOI18N
          print.setForeground(new java.awt.Color(255,255,255));
            print.setText("Print");
            this.add(print);

          JButton home= new JButton();
home.setBackground(new java.awt.Color(153, 153, 0));
            home.setOpaque(true);
            home.setBounds(640,1282,130,85);
            home.setFont(new java.awt.Font("Times New Roman", 1, 24)); // NOI18N
          home.setForeground(new java.awt.Color(255, 255,255 ));
            home.setText("Home");
            this.add(home);

int Height = 134;
int a=100;
             ArrayList<JLabel> label = new ArrayList<JLabel>();

  for(int i=0;i<23;i++){
         JLabel j = new JLabel();
           j.setBackground(new java.awt.Color(255, 140, 255));
            j.setOpaque(true);
            j.setBounds(5,Height,378,50);
            j.setFont(new java.awt.Font("Times New Roman", 1, 16)); // NOI18N
          j.setForeground(new java.awt.Color(128, 128, 128));
            j.setText("Case                                  Item                         CourtNo   ");
             LineBorder line = new LineBorder(Color.blue, 2, true);

       j.setBorder(line);
            this.add(j);
            label.add(j);


               JLabel j1 = new JLabel();
            j1.setBackground(new java.awt.Color(255, 140, 0));
            j1.setOpaque(true);
            j1.setBounds(390,Height,768,50);
            j1.setFont(new java.awt.Font("Times New Roman", 1, 16)); // NOI18N
            j1.setForeground(new java.awt.Color(128, 128, 128));
            j1.setText("Case                                 Item                         CourtNo   ");
            this.add(j1);
            label.add(j1);


               Height = Height +50;
               a=a+10;
  }




        initComponents();


    }
  public void paint(Graphics g) {
        super.paint(g);

         Graphics2D g3 = (Graphics2D) g;
      BasicStroke bs = new BasicStroke(2);
    Line2D lin1 = new Line2D.Float(386, 100, 386, 1282);
      Line2D lin = new Line2D.Float(0, 1283, 768, 1283);
      Line2D line3=new Line2D.Float(400,1284,400,1364);
    g3.setStroke(bs);
     g3.setColor(Color.white);
     g3.draw(lin1);
     g3.draw(lin);
     g3.draw(line3);;

  }
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Second().setVisible(true);
            }
        });
    }}

我的新代码

public class Testing1 extends javax.swing.JFrame {


    public Testing1() {

             JFrame frame = new JFrame();
        JPanel panel = createPanel();
        panel.setLocation(100, 100);
        //panel.setLayout(null);
        this.add(panel);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.pack();
        this.setLocationRelativeTo(null);
        this.setVisible(true);

        initComponents();
    }


     private JPanel createPanel() {
    jPanel1 = new JPanel(new GridLayout(0, 1, 10, 5));
        EmptyBorder panelBorder = new EmptyBorder(10, 10, 10, 10);
        jPanel1.setBorder(panelBorder);
        EmptyBorder border = new EmptyBorder(5, 20, 5, 20);
        LineBorder line = new LineBorder(Color.blue, 2, true);
        CompoundBorder compound = new CompoundBorder(line, border);
        for (int i = 0; i <12; i++) {
            JLabel label = new JLabel("Label" + i);
            label.setBorder(compound);
           // label.setBounds(13, 100, 100, 50);
           jPanel1.add(label);
        }
        return jPanel1;
    }



    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setBackground(new java.awt.Color(204, 0, 153));

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 306, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 243, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 94, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(46, 46, 46)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }                      


    public static void main(String args[]) {


        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Testing1().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                   
}

更新预先感谢

保罗·萨姆索塔

“如何在jlabel之间给空格?”

setBounds and null layouts: 不; 使用EmptyBorders:是的!使用LayoutManagers:是的!

“我怎么用这个,你能解释一下吗”

使用可以使用默认FlowLayout的包含JPanel(或在这种情况下设置FlowLayout的间隙)

FlowLayout构造函数:

public FlowLayout(int align,
      int hgap,
      int vgap)

align-对齐值

hgap-组件之间以及组件与容器边界之间的水平间隙

vgap-组件之间以及组件与容器边界之间的垂直间隙

例子

JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 5);
for (int i = 0; i < 10; i++) {
    panel.add(new JLabel("Label" + i));
}

你可以用 EmptyBorder

EmptyBorder构造函数

public EmptyBorder(int top,
       int left,
       int bottom,
       int right)

top-边框的顶部插图

left-边框的左插图

bottom-边框的底部插图

right-边框的右插图

例子

JPanel panel = new JPanel();
for (int i = 0; i < 10; i++) {
    JLabel label = new JLabel("Label" + i);
    EmptyBorder border = new EmptyBorder(5, 20, 5, 20);
    label.setBorder(border);
    panel.add(label);
}

如果你想使用LineBorder EmptyBorder页边距,您可以使用CompoundBorder

一个复合Border类,用于通过将一个内部Border对象嵌套在一个外部Border对象的插入物中来将两个Border对象组合成一个边框。例如,此类可以用于向具有现有装饰性边框的组件添加空白边距空间:

CompoundBorder示例

JPanel panel = new JPanel();
EmptyBorder border = new EmptyBorder(5, 20, 5, 20);
LineBorder line = new LineBorder(Color.blue, 2, true);
CompoundBorder compound = new CompoundBorder(line, border);
for (int i = 0; i < 10; i++) {
    JLabel label = new JLabel("Label" + i);
    label.setBorder(compound);
    panel.add(label);
}

有很多可能性。选择你的口味。关键是不要尝试为所有内容设置大小和位置,并利用布局管理器以及边框和间隙来调整大小,间距等。

在布局容器中的组件时学习使用不同的布局管理器


使用CompoundBorderGridLayout的完整示例(int行,int cols,int hgap,int vgap)

在此处输入图片说明

import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;

public class CompoundBorderDemo {

    public CompoundBorderDemo() {
        JFrame frame = new JFrame();
        JPanel panel = createPanel();
        frame.add(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    private JPanel createPanel() {
        JPanel panel = new JPanel(new GridLayout(5, 5, 10, 10));
        EmptyBorder panelBorder = new EmptyBorder(10, 10, 10, 10);
        panel.setBorder(panelBorder);
        EmptyBorder border = new EmptyBorder(5, 20, 5, 20);
        LineBorder line = new LineBorder(Color.blue, 2, true);
        CompoundBorder compound = new CompoundBorder(line, border);
        for (int i = 0; i < 25; i++) {
            JLabel label = new JLabel("Label" + i);
            label.setBorder(compound);
            panel.add(label);
        }
        return panel;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new CompoundBorderDemo();
            }
        });
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章