「java系统layout」java系统源代码
本篇文章给大家谈谈java系统layout,以及java系统源代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java的layout用法?最好有代码举例说明
- 2、android开发中java开发文件和layout是如何对应的
- 3、关于java 中的 GridLayout设置问题
- 4、android src中.java、layout中.xml和AndroidManifest.xml文件是通过什么联系起来的?起什么作用?
- 5、java layout种类和用途。要详细
Java的layout用法?最好有代码举例说明
swing组件有自己默认的布局方式。JFrame是BorderLayout,JPanel是FlowLayout。如果想把JPanel换成其它布局方式,做成BorderLayout可以这样做: JPanel jp = new JPanel(new BorderLayout());,做成GridLayout可以这样做: JPanel jp = new JPanel(new GridLayout(2,1,1,1));。其中FlowLayout, GridLayout和BorderLayout这三种布局方式是最常用的,其它的布局如BoxLayout,CardLayout用的相对较少,请参考相关文档
android开发中java开发文件和layout是如何对应的
一般使用Activity都是setContentView(R.layout.main) , main就是layout下的布局。
当然这不是绝对的,也有其他地方使用layout,你可以使用搜索功能查找,例如上面的布局,你可以搜索R.layout.main关键字。
关于java 中的 GridLayout设置问题
你的JPanel可以用BorderLayout啊
上面的文本域,可以被JScrollPane包裹啊,
然后这个pane就加到BorderLayout.CENTER
下面的按钮就加到BorderLayout.SOUTH
这样就刚刚好了,用布局要看情况来选择合适的布局。
还是跟你写好了吧,说都白说了
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class JButtonTest extends JFrame
{
private static final long serialVersionUID = 1L;
public JButtonTest ()
{
setTitle ("tester");
setSize (300, 300);
setLayout (new BorderLayout ());
setLocationRelativeTo (null);
setResizable (false);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
}
private void addComponents ()
{
JTextArea area = new JTextArea ();
JScrollPane scrollPane = new JScrollPane (area);
JButton button = new JButton ("图书推荐");
add (scrollPane, BorderLayout.CENTER);
JPanel panel = new JPanel (new FlowLayout (FlowLayout.CENTER));
panel.add (button);
add (panel, BorderLayout.SOUTH);
}
public static void main ( String[] args )
{
JButtonTest tester = new JButtonTest ();
tester.addComponents ();
tester.setVisible (true);
}
}
android src中.java、layout中.xml和AndroidManifest.xml文件是通过什么联系起来的?起什么作用?
简单说来就是映射。
你可以看到一个正常的android工程下面有个gen文件夹,其中有个包名.R.java,就类似于map的key-value,R.java中就是存放了一个个key值,比如R.drawable.a就对应了res/drawable/a.png文件,那么我们通过此key就可以获得此图片文件的路径,通过加载图片的方法加载为图片,当然有人有疑惑为什么不加载res/drawable-hdpi/a.png,这个是框架层或者底层读取机器的属性(比如分辨率、密度信息)分辨出究竟加载哪个文件夹下面的文件。
因为同属于一个包,有规范的文件夹命名方式,如果你将values文件夹换成valuess,那么就会报错,这个就规定了路径是写死的,所以我们就可以通过id获取写死的路径下面的文件加载。
对于AndroidManifest.xml中加载res中的资源的原理,跟src中的.java如何加载res中的文件是一个意思。
但是AndroidManifest.xml如何加载src中的.java,看图片,这是一个apk中包含的文件,classes.dex是所有.java文件编译过后组合的一个class文件集合,包括R.java编译过后的class文件,resources.arsc中放的是匹配信息,就相当于map信息,哪个key(就是id)对应哪个value。
程序启动的时候,先读取AndroidManifest.xml文件,知道包名,那么此程序的路径就无所遁形,AndroidManifest.xml中有些R.drawable.icon的id,它是先读取classes.dex中的R class文件,然后根据匹配表resources.arsc知道目标文件是在哪儿,那么就可以加载了。 当然classes.dex中某个控件也想加载资源,那么方式是一样的。
java layout种类和用途。要详细
建议复杂布局使用GridBagLayout,虽然操作比较复杂,但是稍微研究下,可以给你的GUI设计出别样风格
GridBagLayout的使用:是java中最有弹性但也是最复杂的一种版面管理器。它只有一种构造函数,但必须配合
GridBagConstraints才能达到设置的效果。
GridBagLayout的类层次结构图:
java.lang.Object
--java.awt.GridBagLayout
构造函数:
GirdBagLayout()建立一个新的GridBagLayout管理器。
GridBagConstraints()建立一个新的GridBagConstraints对象。
GridBagConstraints(int gridx,int gridy,int gridwidth,int gridheight,double weightx,double weighty,
int anchor,int fill, Insets insets,int ipadx,int ipady)建立一个新的GridBagConstraints对象
,并指定其参数的值。
参数说明:
gridx,gridy:设置组件的位置,gridx设置为GridBagConstraints.RELATIVE代表此组件位于之前所加入组件的右边。
若将gridy设置为GridBagConstraints.RELATIVE代表此组件位于以前所加入组件的下面。建议定义出
gridx,gridy的位置,以便以后维护程序。表示放在几行几列,gridx=0,gridy=0时放在0行0列。
gridwidth,gridheight:用来设置组件所占的单位长度与高度,默认值皆为1。你可以使用GridBagConstraints.REMAINDER常
量,代表此组件为此行或此列的最后一个组件,而且会占据所有剩余的空间。
weightx,weighty:用来设置窗口变大时,各组件跟着变大的比例,当数字越大,表示组件能得到更多的空间,默认值皆为0。
anchor: 当组件空间大于组件本身时,要将组件置于何处,有CENTER(默认值)、NORTH、NORTHEAST、EAST、SOUTHEAST、
WEST、NORTHWEST可供选择。
insets:设置组件之间彼此的间距,它有四个参数,分别是上,左,下,右,默认为(0,0,0,0).
ipadx,ipady:设置组件内的间距,默认值为0。
我们以前提过,GridBagLayout里的各种设置都必须通过GridBagConstraints,因此当我们将GridBagConstraints的参数都设置
好了之后,必须new一个GridBagConstraints的对象出来,以便GridBagLayout使用。
例子:
GridBagLayoutDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GridBagLayoutDemo{
public GridBagLayoutDemo(){
JButton b;
GridBagConstraints c;
int gridx,gridy,gridwidth,gridheight,anchor,fill,ipadx,ipady;
double weightx,weighty;
Insets inset;
JFrame f=new JFrame();
GridBagLayout gridbag=new GridBagLayout();
Container contentPane=f.getContentPane();
contentPane.setLayout(gridbag);
b=new JButton("first");
gridx=0;
gridy=0;
gridwidth=1;
gridheight=1;
weightx=10;
weighty=1;
anchor=GridBagConstraints.CENTER;
fill=GridBagConstraints.HORIZONTAL;
inset=new Insets(0,0,0,0);
ipadx=0;
ipady=0;
c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady);
gridbag.setConstraints(b,c);
contentPane.add(b);
b=new JButton("second");
gridx=1;
gridy=0;
gridwidth=2;
gridheight=1;
weightx=1;
weighty=1;
anchor=GridBagConstraints.CENTER;
fill=GridBagConstraints.HORIZONTAL;
inset=new Insets(0,0,0,0);
ipadx=50;
ipady=0;
c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady);
gridbag.setConstraints(b,c);
contentPane.add(b);
b=new JButton("third");
gridx=0;
gridy=1;
gridwidth=1;
gridheight=1;
weightx=1;
weighty=1;
anchor=GridBagConstraints.CENTER;
fill=GridBagConstraints.HORIZONTAL;
inset=new Insets(0,0,0,0);
ipadx=0;
ipady=50;
c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady);
gridbag.setConstraints(b,c);
contentPane.add(b);
b=new JButton("fourth");
gridx=1;
gridy=1;
gridwidth=1;
gridheight=1;
weightx=1;
weighty=1;
anchor=GridBagConstraints.CENTER;
fill=GridBagConstraints.HORIZONTAL;
inset=new Insets(0,0,0,0);
ipadx=0;
ipady=0;
c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady);
gridbag.setConstraints(b,c);
contentPane.add(b);
b=new JButton("This is the last button");
gridx=2;
gridy=1;
gridwidth=1;
gridheight=2;
weightx=1;
weighty=1;
anchor=GridBagConstraints.CENTER;
fill=GridBagConstraints.HORIZONTAL;
inset=new Insets(0,0,0,0);
ipadx=0;
ipady=50;
c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady);
gridbag.setConstraints(b,c);
contentPane.add(b);
f.setTitle("GridBagLayout");
f.pack();
f.setVisible(true);
f.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
}
public static void main(String[] args){
new GridBagLayoutDemo();
}
}
关于java系统layout和java系统源代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。