java中setlayout是什么意思(java中的setLayout怎么用)
各位老铁们,大家好,今天由我来为大家分享java中setlayout是什么意思,以及java中的setLayout怎么用的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
java中的setLayout怎么用
函数声明格式:public void setLayout(LayoutManager manager)
一般的用法:setLayout(new BorderLayout())//或FlowLayout...
随后调用add(...)即可。
常用的有5种:FlowLayout、BorderLayout、GridLayout、CardLayout、GridBagLayout。
一般说都要放在构造函数或初始化函数中,设置后再加入控件。
setBorder()是使用Border边框,Border是特殊的Swing组件,为Swing组件提供不同的边框修饰。
setLayout()是布局管理器,让容器管理Swing组件的摆放位置的。
扩展资料:
下面是几个使用setLayout()方法实现FlowLayout的例子:
setLayout(new FlowLayout(FlowLayout.RIGHT,20,40));
setLayout(new FlowLayout(FlowLayout.LEFT));
setLayout(new FlowLayout());
参考资料来源:百度百科-setLayout
java中帮我看看每条代码的意思,顺便写下来,高分求助!
import java.awt.*;//导入awt包
import java.awt.event.ActionEvent;//导入awt.event.ActionEvent包
import java.awt.event.ActionListener;//导入java.awt.event.ActionListener包
import javax.swing.*;//导入javax.swing包
public class abc{//定义Calculator类
private JFrame jf;//定义JFrame jf
private JButton[] jbs;//定义数组按钮jbs
private JTextField jtf;//定义 TextField
private JButton clear;//定义清除按钮
private double num1,num2,jieguo;//定义三个double类型的变量
private char c;//定义字符型变量c
//构造方法实例化属性
public abc(){//构造函数开始
jf=new JFrame("我的计算器v1.0");//JFrame属性赋值
jtf=new JTextField(20);//
clear=new JButton("clear");//创建clear按钮
jbs=new JButton[16];//创建16个按钮
String str="123+456-789*0./=";//创建字符串也就是每个按钮的文本
for(int i=0; i<str.length(); i++){//对字符串进行遍历截取字符
jbs[i]=new JButton(str.charAt(i)+"");//根据字符创建按钮并将按钮放入jbs集合
}
init();//调用init方法
addEventHandler();//调用addEventHandler方法
showMe();//调用showMe方法
}
//布局图形界面
public void init(){
JPanel jp1=new JPanel();//创建一个面板
jp1.add(jtf);//先将文本框添加到面也就是显示结果和输入数字的文本框
JPanel jp2=new JPanel();//创建一个面板2
jp2.setLayout(new GridLayout(4,4));//设定该面板为4行4列布局
for(int i=0; i<16; i++){//循环jbs和
jp2.add(jbs[i]);//将按钮一个个取出来放到面板2里面
}
JPanel jp3=new JPanel();//创建面板3
jp3.add(clear);//添加清楚按钮
jf.add(jp1,BorderLayout.NORTH);//这三句是将创建三个面板放入大的面板中
jf.add(jp2,BorderLayout.CENTER);
jf.add(jp3,BorderLayout.SOUTH);
}
public void addEventHandler(){
ActionListener lis=new ActionListener(){
//点击触发事件
public void actionPerformed(ActionEvent e){
JButton jb=(JButton)e.getSource();//获取到事件源也就是被点击的哪个按钮
String str=jb.getText().trim();//把字符串的首尾空格去掉!
if("0123456789.".indexOf(str)!=-1){//如果是数字或点号
jtf.setText(jtf.getText()+str);//将文本框的内容加上当前的输入的数字
return;
}
if("+-*/".indexOf(str)!=-1){//如果是加减乘除
num1=Double.parseDouble(jtf.getText());//先获取文本框的值并保存到num1
jtf.setText("");//然后将文本框清空
c=str.charAt(0);//获取操作符号并保存到c
jtf.setText("");//这里重复操作垃圾代码
return;
}
if(str.equals("=")){//如果输入的等于操作
num2=Double.parseDouble(jtf.getText());//获取文本框的值保存到num2
switch(c){//判断之前输入的符号
case'+': jieguo=num1+num2;break;//这里的四个就是做加减乘除操作要点就是讲之前保存的num1和 num2获取出来进行操作将结果保存 jieguo
case'-': jieguo=num1-num2;break;
case'*': jieguo=num1*num2; break;
case'/': jieguo=num1/num2;break;
}
jtf.setText(Double.toString(jieguo));//把jieguo的值付给当前文本框
return;
}
if(e.getActionCommand().equals("clear")){//如果按时清除按钮
jtf.setText("");//情况文本框内容不过这里也有bug个人认为应该把num1和 num2也清0
return;
}
}
};
//对jbs集合进行遍历
for(int i=0; i<jbs.length; i++){
//给按钮添加事件
jbs[i].addActionListener(lis);
}
//对清除按钮添加事件
clear.addActionListener(lis);//
}
public void showMe(){
jf.pack();
jf.setVisible(true);//设置可见
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args){
new CaculatorA();
}
}
JFrame其实我没用过,但这是简单的计算器实现,应该比较好理解
java 里面的Jpanel.setlayout(null)
这个问题如果对BorderLayout的原理不理解是很难解释的
出现这个问题的主要原因是由于jpn的布局方式,假设一个容器的布局方式设置为null的话,如果没有显示的调用setPreferSize()方法,那么的首选大小为(0,0)。根据BorderLayout,North组件的高度受到其本身的PreferSize的Heigth控制,由于这里是0,所以布局计算出来jpn的高度为0,展示出来就看不到jpn,所以就看不见。
如果为center事情就完全不一样了,可以看出中间组件高度,整个高度-TOP的PreferSize-Bottom的Prefersize,宽度计算原理一样。本例中,BorderLayout的组件上下左右均无组件,所以中间组件的大小为整个容器的大小。所以是把jpn平铺在整个容器中,所以是可见的。
说了这么多,不知道你能否明白。还有什么不懂,可以参见BorderLayout的源代码中的layoutContainer方法。
java中setBorder和setFocusable是什么意思
这两个方法是swing组件的方法,setBorder设置组件的边框,如大小、是否透明、其他特殊效果。setFocusable设置组件是否可被选中,如文本框不允许复制内容,则setFocusable(false),不能被选中,就不可以复制。
setBorder(Border border)设置组件的边框,Border对象负责定义组件的 insets(直接对组件重写所有 insets设置),并且可选地呈现这些 insets
范围内的边框装饰。要为 swing组件创建有装饰的和无装饰的区域(例如边距和填充),应该使用边框(而不是
insets)。在单个组件中可使用复合边框来嵌套多个边框。
setFocusable(boolean focusable)表明此 Component是否可以获得焦点。
关于java中setlayout是什么意思,java中的setLayout怎么用的介绍到此结束,希望对大家有所帮助。