我最近在书上看了java的3种布局管理器类:总结下来是:
1、border layout manger 可以把面板分成*行*列
2、flow layout manger 默认的布局管理器,组件添加上去一行空间不够会显示到下一行
3、gridbag layout manger 这个比较复杂,可以对每个组件的效果进行设置和约束另外还有一个类我一直弄不清,JPanel 类 ,。
我把JFrame类看成是框架,JPanel类看成是容器。就跟房子的框架和墙一样。
但是我今天看到个列子,程序中没有定义JPanel类,而直接使用JFrame.
这样做程序怎么可行?还有大家写项目的时候用哪一类的布局管理器,给些编写java表陈框架建议给我,谢谢。上面说的错误也请大家指正!
1、border layout manger 可以把面板分成*行*列
2、flow layout manger 默认的布局管理器,组件添加上去一行空间不够会显示到下一行
3、gridbag layout manger 这个比较复杂,可以对每个组件的效果进行设置和约束另外还有一个类我一直弄不清,JPanel 类 ,。
我把JFrame类看成是框架,JPanel类看成是容器。就跟房子的框架和墙一样。
但是我今天看到个列子,程序中没有定义JPanel类,而直接使用JFrame.
这样做程序怎么可行?还有大家写项目的时候用哪一类的布局管理器,给些编写java表陈框架建议给我,谢谢。上面说的错误也请大家指正!
JPanel不能做窗口容器 就这点区别
布局管理器都是结合着用 一个套一个
import java.awt.*;
import java.lang.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
public class ButtonTest
{
public static void main(String[] args){
ButtonFrame frame=new ButtonFrame();
frame.setVisible(true);
}
}class ButtonFrame extends JFrame
{
public ButtonFrame(){
setTitle("ButtonTest");
setSize(300,200);//Create Button
JButton yellowButton=new JButton("yellow");
buttonpanel=new JPanel();
//add to Frame
add(buttonpanel);
buttonpanel.add(yellowButton);
ColorAction yellowAction=new ColorAction(Color.YELLOW);
yellowButton.addActionListener(yellowAction);
}
private class ColorAction implements ActionListener
{
public ColorAction(Color c){
backgroundColor=c;
}public void actionPerformed(ActionEvent event)
{buttonpanel.setBackground(backgroundColor);
} private Color backgroundColor;
}
private JPanel buttonpanel;
}
我把Button组件直接添加到Frame中不经过JPanel后就得不到正确结果,求解释!!!
2、flow layout manger 默认的布局管理器,组件添加上去一行空间不够会显示到下一行
3、gridbag layout manger 这个比较复杂,可以对每个组件的效果进行设置和约束这三个总结也是有出入的
1.BorderLayout 分成北 南 中 左 右
2.FlowLayout是JPanel的默认,JFrame的默认是BorderLayout
3.这个倒是没错
只是把add(buttonpanel);给去掉了?
还是怎么去掉的?action里实打实的写着buttonpanel,去掉了之后这句怎么改的?
至于你说的去掉JPanel不行,那是因为你这个具体的代码的问题,你没有设计好导致了编译错误罢了
下面给你贴一个可以跑的import java.awt.*;
import java.lang.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
public class ButtonTest
{
public static void main(String[] args){
ButtonFrame frame=new ButtonFrame();
frame.setVisible(true);
}
}class ButtonFrame extends JFrame
{
public ButtonFrame(){
setTitle("ButtonTest");
setSize(300,200);//Create Button
JButton yellowButton=new JButton("yellow");
textField=new JTextField("尚未点击");
// buttonpanel=new JPanel();
////add to Frame
// add(buttonpanel);
// buttonpanel.add(yellowButton);
this.setLayout(new BorderLayout());
this.add(yellowButton,BorderLayout.CENTER);
this.add(textField,BorderLayout.EAST);
ColorAction yellowAction=new ColorAction(Color.YELLOW);
yellowButton.addActionListener(yellowAction);
}
private class ColorAction implements ActionListener
{
public ColorAction(Color c){
backgroundColor=c;
} public void actionPerformed(ActionEvent event)
{// buttonpanel.setBackground(backgroundColor);
clickTimes++;
textField.setText("你已经点击了"+clickTimes+"次");
} private Color backgroundColor;
}
private JTextField textField;
private int clickTimes=0;
// private JPanel buttonpanel;
}