Java 简单布局管理
来源:互联网 发布:知乎 北京 皮肤科 编辑:程序博客网 时间:2024/05/17 21:51
边框布局(BorderLayout): 中是先放置边缘组件,剩余的空间由中间组件占据,当容器缩放时边缘组建厚度不变,而中部组件的大小会发生变化。 边框布局的默认放置位置是CENTER。
流式布局(FlowLayout): 容器里面的组件总是位于容器的中间, 当一行空间不足够时, 会自动换置下一行, 当容器拉伸时,同理。
网格布局(GridLayout): 其像电子数据表一样, 按行列排列所有组件, 且每个单元大小都是一样的。当容器缩放时,组件也会随之变大或变小,但每个网格大小都是保持一致的。在网格布局对象构造其中,需要制定行数和列数。添加组件,不指定的情况下,是从第一行第一列开始,然后是第一行第二列,一次类推。 (课调用pack方法将所有组件俺最佳的高度和宽度显示在框架中。)
package com.njust.JunH.JavaStart;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Calculator {
/**
* @param args
* @author Jun.h
* @company NUST
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
EventQueue.invokeLater(new Runnable() {
public void run() {
CalculatorFrame frame = new CalculatorFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class CalculatorFrame extends JFrame {
public CalculatorFrame() {
setTitle("Calculator");
CalculatorPanel panel = new CalculatorPanel();
add(panel);
pack();
}
}
class CalculatorPanel extends JPanel {
private JButton display;
private JPanel panel;
private double result;
private String lastCommand;
private boolean start;
public CalculatorPanel() {
setLayout(new BorderLayout());
result = 0;
lastCommand = "=";
start = true;
//add the display
display = new JButton("0");
display.setEnabled(false);
add(display, BorderLayout.NORTH);
ActionListener insert = new InsertAction();
ActionListener command = new CommandAction();
//add the buttons in a 4*4 grid
panel = new JPanel();
panel.setLayout(new GridLayout(4,4));
addButton("7", insert);
addButton("8", insert);
addButton("9", insert);
addButton("/", command);
addButton("4", insert);
addButton("5", insert);
addButton("6", insert);
addButton("*", command);
addButton("1", insert);
addButton("2", insert);
addButton("3", insert);
addButton("-", command);
addButton("0", insert);
addButton(".", insert);
addButton("=", command);
addButton("+", command);
add(panel, BorderLayout.CENTER);
}
private void addButton(String label, ActionListener listener) {
JButton btn = new JButton(label);
btn.addActionListener(listener);
panel.add(btn);
}
private class InsertAction implements ActionListener {
public void actionPerformed(ActionEvent event) {
String input = event.getActionCommand();
if (start) {
display.setText("");
start = false;
}
display.setText(display.getText() + input);
}
}
private class CommandAction implements ActionListener {
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
if (start) {
if (command.equals("-")){
display.setText(command);
start = false;
}
else lastCommand = command;
}
else {
calculate(Double.parseDouble(display.getText()));
lastCommand = command;
start = true;
}
}
}
public void calculate(double x) {
if (lastCommand.equals("+")) result += x;
else if (lastCommand.equals("*")) result *= x;
else if (lastCommand.equals("-")) result -= x;
else if (lastCommand.equals("/")) result /= x;
else if (lastCommand.equals("=")) result = x;
display.setText("" + result);
}
}
流式布局(FlowLayout): 容器里面的组件总是位于容器的中间, 当一行空间不足够时, 会自动换置下一行, 当容器拉伸时,同理。
网格布局(GridLayout): 其像电子数据表一样, 按行列排列所有组件, 且每个单元大小都是一样的。当容器缩放时,组件也会随之变大或变小,但每个网格大小都是保持一致的。在网格布局对象构造其中,需要制定行数和列数。添加组件,不指定的情况下,是从第一行第一列开始,然后是第一行第二列,一次类推。 (课调用pack方法将所有组件俺最佳的高度和宽度显示在框架中。)
JPane 默认的是流式布局管理
JFrame默认的是边框布局管理
package com.njust.JunH.JavaStart;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Calculator {
/**
* @param args
* @author Jun.h
* @company NUST
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
EventQueue.invokeLater(new Runnable() {
public void run() {
CalculatorFrame frame = new CalculatorFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class CalculatorFrame extends JFrame {
public CalculatorFrame() {
setTitle("Calculator");
CalculatorPanel panel = new CalculatorPanel();
add(panel);
pack();
}
}
class CalculatorPanel extends JPanel {
private JButton display;
private JPanel panel;
private double result;
private String lastCommand;
private boolean start;
public CalculatorPanel() {
setLayout(new BorderLayout());
result = 0;
lastCommand = "=";
start = true;
//add the display
display = new JButton("0");
display.setEnabled(false);
add(display, BorderLayout.NORTH);
ActionListener insert = new InsertAction();
ActionListener command = new CommandAction();
//add the buttons in a 4*4 grid
panel = new JPanel();
panel.setLayout(new GridLayout(4,4));
addButton("7", insert);
addButton("8", insert);
addButton("9", insert);
addButton("/", command);
addButton("4", insert);
addButton("5", insert);
addButton("6", insert);
addButton("*", command);
addButton("1", insert);
addButton("2", insert);
addButton("3", insert);
addButton("-", command);
addButton("0", insert);
addButton(".", insert);
addButton("=", command);
addButton("+", command);
add(panel, BorderLayout.CENTER);
}
private void addButton(String label, ActionListener listener) {
JButton btn = new JButton(label);
btn.addActionListener(listener);
panel.add(btn);
}
private class InsertAction implements ActionListener {
public void actionPerformed(ActionEvent event) {
String input = event.getActionCommand();
if (start) {
display.setText("");
start = false;
}
display.setText(display.getText() + input);
}
}
private class CommandAction implements ActionListener {
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
if (start) {
if (command.equals("-")){
display.setText(command);
start = false;
}
else lastCommand = command;
}
else {
calculate(Double.parseDouble(display.getText()));
lastCommand = command;
start = true;
}
}
}
public void calculate(double x) {
if (lastCommand.equals("+")) result += x;
else if (lastCommand.equals("*")) result *= x;
else if (lastCommand.equals("-")) result -= x;
else if (lastCommand.equals("/")) result /= x;
else if (lastCommand.equals("=")) result = x;
display.setText("" + result);
}
}
- Java 简单布局管理
- 布局管理简单认识
- Java---布局管理代码简单使用(解答)
- Java布局管理
- JAVA布局管理
- java 布局管理
- java布局管理
- java awt布局管理
- java布局管理
- Java布局管理
- 纯java简单布局
- java Swing布局管理之GridLayout布局
- java Swing布局管理之GridBagLayout布局
- java Swing布局管理之BoxLayout布局
- Java笔记之布局管理
- java swing MigLayout 布局管理
- 使用java来管理布局
- java-awt-简单窗体布局
- 《C++第十二周实验报告3-1》-----自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,摩托车类的基类为自行车类和机动车类,
- BCB Class 编译出错 请教!!!
- 如何隐藏Android4.0及以上版本的ActionBar、NotificationBar、StatusBar、SystemBar、TitleBar
- OpenStreetMap初探(六)——获取地图数据
- window下文本文件和二进制文件的理解
- Java 简单布局管理
- Delphi生成多Sheet的Excel文件的代码
- mysql备份脚本
- shell 简单的文件上传
- android防止EditText自动弹出软键盘
- 解决VMware 7虚拟机用无线网卡虚拟机ping不通主机的问题
- Linux环境下WEKA连接mysql开发
- 初学 Java Web 开发,请远离各种框架,从 Servlet 开发
- 第12周-任务3-做个摩托车开一开