当前位置:首页 » 编程语言 » java的swing布局

java的swing布局

发布时间: 2023-07-23 11:00:35

A. java swing布局

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

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

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

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

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

importjava.awt.event.KeyEvent;

importjavax.swing.BorderFactory;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.SwingUtilities;
importjavax.swing.border.Border;
importjavax.swing.border.EtchedBorder;

importnet.miginfocom.swing.MigLayout;

{
publicMyFrame(){
begin();
}

privatevoidbegin(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(newMigLayout("insets10,fill","[]","[]5[]"));

//firstpanel
JPanelfirst=newJPanel();

//first这个panel有5像素的边缘,2列,3行。第一列右对齐,占40%宽度;第二列默认,左对齐,占据剩余所有空间。
first.setLayout(newMigLayout("insets5,fill","[right,40%]5[fill,grow]","[]5[]5[]"));
first.setOpaque(false);
//这个面板的border有些特殊:createTitledBorder()方法的签名可以有两个:前一个是线的类型,后面一个是标题文本。
Borderresult=BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED),"修改信息:");
first.setBorder(result);
//把first加到contentPane里面
add(first,"cell00,grow");

JLabeloriginal=newJLabel("输入原密码:");
JLabelnewPass=newJLabel("输入新密码:");
JLabelconfirm=newJLabel("确认新密码:");

JTextFieldorig_field=newJTextField();
JTextFieldnew_field=newJTextField();
JTextFieldconfirm_field=newJTextField();

//miglayout的核心就是网格排布。用坐标来定义添加元素的位置
first.add(original,"cell00,w100!");//addtocol0,line0,min:pref:maxwidthallsetto100
first.add(newPass,"cell01,w100!");//addtocol0,line1
first.add(confirm,"cell02,w100!");//addtocol0,line2

first.add(orig_field,"cell10,w150!");//addtocol1,line0,min:pref:maxwidthallsetto150
first.add(new_field,"cell11,w150!");//addtocol1,line1
first.add(confirm_field,"cell12,w150!");//addtocol1,line2

//按钮面板
JPanelbuttons=newJPanel();
buttons.setOpaque(false);
//边缘为5像素;有两列,中间是10像素的间距,列内元素居中;有一行,行中上下对齐也是居中
buttons.setLayout(newMigLayout("insets5,fill","[center]10[center]","[center]"));
JButtonyes=newJButton("Y.确定");
//快捷键设为虚拟键Y,得到下划线效果
yes.setMnemonic(KeyEvent.VK_Y);

JButtonquit=newJButton("Q.退出");
//快捷键设为虚拟键Q,得到下划线效果
quit.setMnemonic(KeyEvent.VK_Q);

//把yes按钮加到第一列第一行,min:pref:max的大小都设为100像素
buttons.add(yes,"cell00,w100!");
//把quit按钮加到第二列第一行,min:pref:max的大小都设为100像素
buttons.add(quit,"cell10,w100!");

//把按钮面板加到contentPane里面
add(buttons,"cell01,grow");
pack();
setBounds(0,0,500,400);
setLocationRelativeTo(null);
setVisible(true);
}
publicstaticvoidmain(String[]args){
SwingUtilities.invokeLater(newRunnable(){

@Override
publicvoidrun(){
MyFrameframe=newMyFrame();

}

});
}
}

效果是这样:


B. java怎么做swing界面

swing做界面,一般需要一种基本知识:

一:关于布局的知识,常用的布局要熟悉,比如边界布局,流式布局,绝对布局,网格布局等. 布局决定了组件(按钮,文本框,下拉框等)所在的位置

二:关于事件响应机制,比如点击按钮事件,如何响应.

三:一些常用的组件,按钮, 文本框, 下拉框,复选按钮, 单选按钮, 等

举例: 简单的代码,实现给窗口随机更换背景色

importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;

{

publicDemoFrame(){
JButtonjb1=newJButton("点击换背景色");//定义按钮组件
jb1.addActionListener(this);//给按钮添加事件响应机制,按钮点击时执行actionPerformed方法
add(jb1);//把组件添加到窗口
setLayout(newFlowLayout());//流式布局
setTitle("Color");//窗口标题
setSize(300,200);//大小
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//点击关闭时退出系统
setVisible(true);//窗口可见
}
publicstaticvoidmain(String[]args){//main方法,启动窗口
newDemoFrame();//创建窗口
}

publicvoidactionPerformed(ActionEvente){//当按钮被点击时,执行下面的代码
//随机颜色,并设置成为窗口的背景色
getContentPane().setBackground(newColor((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
}
}

热点内容
哈佛f7x怎么区分配置 发布:2025-02-07 22:22:34 浏览:771
广州python培训 发布:2025-02-07 22:22:26 浏览:199
陆金所的交易密码是什么 发布:2025-02-07 22:19:25 浏览:317
如何删除平板储存密码 发布:2025-02-07 22:10:29 浏览:747
php微信授权登录 发布:2025-02-07 22:10:27 浏览:378
怎样编程时钟 发布:2025-02-07 21:59:38 浏览:561
夸克编程 发布:2025-02-07 21:43:43 浏览:530
电源450适合哪些配置 发布:2025-02-07 21:25:24 浏览:433
微信密码一般要多少位以上 发布:2025-02-07 21:24:19 浏览:882
sqldecimal转换 发布:2025-02-07 21:17:50 浏览:661