「javaswing排版」java swing html
今天给各位分享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的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-02,除非注明,否则均为
原创文章,转载请注明出处。