当前位置:首页 » 编程语言 » swingjava布局

swingjava布局

发布时间: 2022-11-14 00:01:36

A. 在java Swing中一个容器中可以有多个布局么

可以再JFrame中添加两个JPanel 两个JPanel的布局用一种,JPanel内再用另一种布局

B. swing 布局

窗口采用默认布局(BorderLayout),North放那四个字,

Center放JSplitPane,
splitPane中,左边放树(树外面最好套一层JScrollPane)
splitPane右边放一个JPanel,采用GridbagLayout,
第一行为一个JPanel(采用默认布局FlowLayout),放那些文本和单选按钮,
第二行第一列放一个JPanel(设置border,里面放JScrollPane套表格),第二列放一个JPanel(采用BoxLayout,里面放两个按钮),第三列与第一列类似。
另外,你截图上两个表格未对齐,按我的方式,两个表格是上对齐的,会好看一点。

写完后才发现,你只截了窗口的一部分,外面还有个JSplitPane吧,不过按我的方法不影响,只是因为原来说的窗口(现在发现只是个JPanel),需要手工设置布局为BorderLayout

C. 在JAVAswing布局设置FlowLayout和GridLayout中了怎么调节组件的大小。

这种布局情况要用GridBagLayout,FlowLayout和GridLayout完成不了

D. 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();

}

});
}
}

效果是这样:


E. java swing怎样开发出漂亮的界面

使用Swing照样可以开发出漂亮的界面.

主要的解决方案如下:

  • 1: 合理的布局 , 搭建好界面的框架. 熟悉常用的布局, 并且布局还可以嵌套布局. 可以实现复杂而又美观的界面.

  • 2: 适当的图片, 按钮, 背景等 都可以使用图片, 当然了为了节省系统资源, 可以使用稍微压缩得比较小的图片.

  • 3: 搭配html , swing支持html简单的标签, 所以美化JButton ,JLabel等组件时, 可以使用一些Html标签. 来美化~~

  • 4: 颜色调和. 界面要美观, 也可以适当的添加颜色, 但是要注意搭配和协调

  • 5: 重写部分组件, swing自带的组件外观, 的确不太让人恭维, 但是我们可以自己根据需求进行重写.

  • 6: 添加动态效果, 我们写javaScript经常是用来做特效的 , 我们可以借鉴一些JS特效的思路, 使用线程, 来给swing组件 等,添加动态的效果 , 比如抖动, 移动 , 滑出 等 特效~

  • 7: 更换皮肤和外观 , 或者使用第三方的皮肤 ,比大神制作的皮肤BeautyEye ,就想当的漂亮

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

如果你想实现动态的按照要求的放大和缩小。那么你应该设置布局为frame.setLayout(null)
定义变量 width,height。然后在窗口改变大小重绘组件的时候,动态设置组件大小

比如 JButton.setBounds(0,0,width/10,height/10);

===================================================================

建议使用borderlayout边界布局。非常好用。用边界布局套流布局,表布局就能做出很多界面了

简单的范例,你参考下

publicclassMyBorderLayout{

publicstaticvoidmain(String[]args){

Framef=newFrame("P03窗口");

f.setLayout(newBorderLayout(30,5));

f.add(newButton("东"),BorderLayout.EAST);

f.add(newButton("西"),BorderLayout.WEST);

f.add(newButton("中"));

f.add(newButton("南"),BorderLayout.SOUTH);

f.add(newButton("北"),BorderLayout.NORTH);

f.pack();

f.setVisible(true);

}

}

如果你想实现动态的按照要求的放大和缩小。那么你应该设置布局为frame.setLayout(null)
定义变量 width,height。然后在窗口改变大小重绘组件的时候,动态设置组件大小

比如 JButton.setBounds(0,0,width/10,height/10);

G. java swing 要怎么控制布局啊 好乱啊 那些控件的 size()和setBounds 根本没用

如果你设置布局了那么setsize、setlocation之类的方法就没什么用了,不过你可将布局设为空也就是setlayout(null);然后在setsize、setlocation,就没问题了

H. java swing 实现以下布局

tabbedPane 加两个panel
行驶记录用MigLayout布局。
5行两列。最小面的一行设grow ,列设span就可以了。

I. java关于swing窗口布局的小问题!

JSplitPane splitPane = new JSplitPane (JSplitPane.HORIZONTAL_SPLIT, a, b);
splitPane.setOneTouchExpandable (true);
splitPane.setDividerLocation (100);

J. 求助java的swing窗体怎么做如图布局效果

运行效果


importjava.awt.Container;
importjava.awt.Font;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.Box;
importjavax.swing.BoxLayout;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.SwingUtilities;
{
privateJLabelnumLabel=newJLabel("15");
privateJButtonstartBtn=newJButton("Start");
privateJButtonstopBtn=newJButton("Stop");
privateJButtonspeedUpBtn=newJButton("SpeedUp");
privateJButtonslowDownBtn=newJButton("SlowDown");
{
startBtn.addActionListener(this);
stopBtn.addActionListener(this);
speedUpBtn.addActionListener(this);
slowDownBtn.addActionListener(this);
Containercon=getContentPane();
con.setLayout(newBoxLayout(con,BoxLayout.Y_AXIS));
numLabel.setFont(newFont("",Font.BOLD,60));
BoxnumBox=Box.createHorizontalBox();
numBox.add(numLabel);
add(numBox);
BoxbtnBox=Box.createHorizontalBox();
btnBox.add(startBtn);
btnBox.add(stopBtn);
btnBox.add(speedUpBtn);
btnBox.add(slowDownBtn);
add(btnBox);

setTitle("ThreadTest");
setSize(400,300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
@Override
publicvoidactionPerformed(ActionEvente){

}
publicstaticvoidmain(String[]args){
SwingUtilities.invokeLater(()->newTestWin());
}
}

热点内容
手机路由器如何登陆密码 发布:2025-01-12 18:35:41 浏览:464
电光猫无法连接服务器是什么原因 发布:2025-01-12 18:32:58 浏览:512
迷你世界测试服的密码从哪里打开 发布:2025-01-12 18:25:32 浏览:110
我的世界手游tis服务器 发布:2025-01-12 18:24:28 浏览:585
青海省分布式服务器云主机 发布:2025-01-12 18:12:03 浏览:476
英雄联盟安卓手机版怎么切换 发布:2025-01-12 18:10:53 浏览:381
q5尊享时尚型哪些配置 发布:2025-01-12 18:05:41 浏览:229
安卓版本哪里下载 发布:2025-01-12 18:05:39 浏览:557
mc服务器搭建搜不到 发布:2025-01-12 17:57:37 浏览:18
手机手势密码忘了怎么办 发布:2025-01-12 17:14:51 浏览:487