「javaswing排版」java swing html

博主:adminadmin 2022-12-02 05:36:05 101

今天给各位分享javaswing排版的知识,其中也会对java swing html进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java swing布局

null layout不是很好,所有的东西都要自己定义,一旦窗口大小变化就要重新计算。我建议使用MigLayout。上手慢,但很强大。

而且,就算你要用内建的Layout Manager,还有一个GridBag Layout,比Grid Layout更强大一点。

接下来,那个边框,不是JSeparator, 而是一个边框。我猜是

Border result = BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "修改信息: ");

如果是我,使用MigLayout,以上代码还是比较简单的:

import java.awt.event.KeyEvent;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.SwingUtilities;

import javax.swing.border.Border;

import javax.swing.border.EtchedBorder;

import net.miginfocom.swing.MigLayout;

public class MyFrame extends JFrame {

    public MyFrame() {

        begin();

    }

    private void begin() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setLayout(new MigLayout("insets 10, fill", "[]", "[]5[]"));

        

        //first panel

        JPanel first = new JPanel();

        

        //first这个panel有5像素的边缘,2列,3行。第一列右对齐,占40%宽度;第二列默认,左对齐,占据剩余所有空间。

        first.setLayout(new MigLayout("insets 5, fill", "[right, 40%]5[fill, grow]", "[]5[]5[]"));

        first.setOpaque(false);

        //这个面板的border有些特殊:createTitledBorder()方法的签名可以有两个:前一个是线的类型,后面一个是标题文本。

        Border result = BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "修改信息: ");

        first.setBorder(result);

        //把first加到contentPane里面

        add(first, "cell 0 0, grow");

        

        JLabel original = new JLabel("输入原密码: ");

        JLabel newPass = new JLabel("输入新密码: ");

        JLabel confirm = new JLabel("确认新密码: ");

        

        JTextField orig_field = new JTextField();

        JTextField new_field = new JTextField();

        JTextField confirm_field = new JTextField();

        

        //miglayout的核心就是网格排布。用坐标来定义添加元素的位置

        first.add(original, "cell 0 0, w 100!");      //add to col 0, line 0, min:pref:max width all set to 100

        first.add(newPass, "cell 0 1, w 100!");       //add to col 0, line 1

        first.add(confirm, "cell 0 2, w 100!");       //add to col 0, line 2

        

        first.add(orig_field, "cell 1 0, w 150!");    //add to col 1, line 0, min:pref:max width all set to 150

        first.add(new_field, "cell 1 1, w 150!");    //add to col 1, line 1

        first.add(confirm_field, "cell 1 2, w 150!");    //add to col 1, line 2

        

        //按钮面板

        JPanel buttons = new JPanel();

        buttons.setOpaque(false);

        //边缘为5像素;有两列,中间是10像素的间距,列内元素居中;有一行,行中上下对齐也是居中

        buttons.setLayout(new MigLayout("insets 5, fill", "[center]10[center]", "[center]"));

        JButton yes = new JButton("Y. 确定");

        //快捷键设为虚拟键Y,得到下划线效果

        yes.setMnemonic(KeyEvent.VK_Y);

        

        JButton quit = new JButton("Q. 退出");

        //快捷键设为虚拟键Q,得到下划线效果

        quit.setMnemonic(KeyEvent.VK_Q);

        

        //把yes按钮加到第一列第一行,min:pref:max的大小都设为100像素

        buttons.add(yes, "cell 0 0, w 100!");

        //把quit按钮加到第二列第一行,min:pref:max的大小都设为100像素

        buttons.add(quit, "cell 1 0, w 100!");

        

        //把按钮面板加到contentPane里面

        add(buttons, "cell 0 1, grow");

        pack();

        setBounds(0, 0, 500, 400);

        setLocationRelativeTo(null);

        setVisible(true);

    }

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            @Override

            public void run() {

                MyFrame frame = new MyFrame();

            }

        });

    }

}

效果是这样:

MigLayout还允许你使用辅助线来debug。把这一行:

first.setLayout(new MigLayout("insets 5, fill", "[right, 40%]5[fill, grow]", "[]5[]5[]"));

改成:

first.setLayout(new MigLayout("insets 5, fill,debug", "[right, 40%]5[fill, grow]", "[]5[]5[]"));

你就可以看到first面板里面的辅助线了。

JAVA swing怎样让按钮和标签随着窗口的放大而放大而且排版不变?

使用gridbaglayout布局。

在JPanel中使用该布局存放按钮和标签组件。

该布局有点繁琐。有不懂请留言。

这里给出gridbaglayout布局参数说明。你用的上。

gridx——组件的左边缘与网格左部之间的距离,默认值为 RELATIVE

gridy——组件的上边缘与网格顶部之间的距离,默认值为 RELATIVE

gridwidth——组件的横向宽度,默认值为1

gridheight——组件的纵向高度,默认值为1

ipadx——组件间的横向间距,组件的宽度就是这个组件的最小宽度加上ipadx值, 默认值为 0。

ipady——组件间的纵向间距,组件的高度就是这个组件的最小高度加上ipady值, 默认值为 0。

weightx——当窗口变大时,各组件沿水平方向跟着变大的比例,默认值为 0。

weighty——当窗口变大时,各组件沿垂直方向跟着变大的比例,默认值为 0。

fill——组件比显示区域小,可以用来控制组件的行为。控制组件是垂直填充,还是水平填充,或者两个方向一起填充,默认值为 NONE。

insets——指组件与显示区域四周边缘的空白区域的大小new Insets(上、左、下、右),默认值为 new Insets(0, 0, 0, 0)。

anchor——组件比显示区域小,告诉布局管理器组件在表格空间中的位置,默认值为

CENTER。

对gridwidth与gridheight做了修改后,必须记得要对fill属性做相应的修改,否则组件所显示的大小还是原来的大小。

gridx、gridy的可能值

RELATIVE 将被放置在前一个组件的右侧或下方

gridwidth、gridheight的可能值

RELATIVE 指定此组件为其行或列中的倒数第二个组件

REMAINDER 创建的组件会从创建的起点位置 开始一直延伸到容器所能允许的限度为止.

fill的可能值

NONE:不调整组件大小。

HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。 VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。 BOTH:使组件完全填满其显示区域。

java中swing的布局

当然可以。

首先布局要设为空布局setLayout(null);

然后就可以具体布置控件了,有两种方法:

1:label.setBounds(int x,int y,int width,int height)

2:label.setSize(int width, int height);

label.setLocation(int x,int y);

关于javaswing排版和java swing html的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-02,除非注明,否则均为首码项目网原创文章,转载请注明出处。