窗体的分析
1、要有窗体类
2、要有测试类
3、示例二有事件监听类,主要是将得到的事件源对象(也就是那些组件对象)进行设置和一些修改,对他们进行一些处理。写进应有的方法中。
遇到异常:
示例一:
package com.vetor.lesson;
import java.awt.Frame;
import javax.swing.JFrame;
public class Demo {
public static void main(String[] args) {
//继承JFrame的类就变成了一个窗体
PanelGridLayout p = new PanelGridLayout();
p.setBounds(100, 100, 450, 260);
p.setVisible(true); p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
package com.vetor.lesson;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Label;
import javax.swing.JPanel;
public class Pane extends JPanel{
public Pane() {
GridLayout grid = new GridLayout(6,6); //网格布局
setLayout(grid);
Label label[][] = new Label[6][6]; //创建一个二维数组的标签
//添加标签并设置颜色
for(int i = 0; i < 6;i++)
{
for(int j = 0; j<6;j++)
{
label[i][j] = new Label();
if((i+j)%2==0)
{
label[i][j].setBackground(Color.black);
}
else {
label[i][j].setBackground(Color.white);
}
add(label[i][j]); //添加到面板里
}
}
}
}
package com.vetor.lesson;
import java.awt.*;
import javax.swing.*;
public class PanelGridLayout extends JFrame {
Container x = getContentPane();
PanelGridLayout() {
init();
}
void init() {
x.setLayout(new BorderLayout()); //BorderLayout布局
JButton b1,b2,b3,b4; //组件
b1 = new JButton("北方");
b2 = new JButton("南方");
b3 = new JButton("西方");
b4 = new JButton("东方");
//添加组件
x.add(b1,"North");
x.add(b2,"South");
x.add(b3,"West");
x.add(b4,"East");
x.add(new Pane());
}
}
示例二:
代码如下(示例):
public class Example9_8 {
public static void main(String[] args) {
WindowOperation win = new WindowOperation();
win.setBounds(100, 100, 390, 360);
win.setTitle("简单计算器");
}
}
package com.vetor.two;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class WindowOperation extends JFrame {
JTextField inputNumberOne,inputNumberTwo;
JComboBox choiceFuhao;
JTextArea textShow;
JButton button;
ComputerListener computer; //监视ActionEvent事件的监视器
public WindowOperation() {
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init() {
setLayout(new FlowLayout());
inputNumberOne = new JTextField(5);
inputNumberTwo = new JTextField(5);
choiceFuhao = new JComboBox();
button = new JButton("计算");
//
choiceFuhao.addItem("选择运算符号:");
String[] a = {"+","-","*","/"};
for(int i = 0;i < a.length;i++)
{
choiceFuhao.addItem(a[i]);
}
//
textShow = new JTextArea(9,30);
computer = new ComputerListener();
//
computer.setJComboBox(choiceFuhao);
computer.setWorkTogether(computer);
computer.setJTextFieldOne(inputNumberOne);
computer.setJTextFieldTwo(inputNumberTwo);
computer.setJTextArea(textShow);
//添加监听
button.addActionListener(computer);
//有时,添加顺序会影响组件显示顺序的
add(inputNumberOne);
add(choiceFuhao);
add(inputNumberTwo);
add(button);
//添加滑动
add(new JScrollPane());
add(textShow);
}
}
package com.vetor.two;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class ComputerListener implements ActionListener {
JTextField inputNumberOne,inputNumberTwo;
JTextArea textShow;
String fuhao;
JComboBox choice;
ComputerListener workTogether;
public void setJComboBox(JComboBox box) {
choice = box;
}
public void setWorkTogether(ComputerListener computer) {
workTogether = computer;
}
public void setJTextFieldOne(JTextField t) {
inputNumberOne = t;
}
public void setJTextFieldTwo(JTextField t) {
inputNumberTwo = t;
}
public void setJTextArea(JTextArea area) {
textShow = area;
}
public void setFuhao(String s) {
fuhao = s;
}
public void actionPerformed(ActionEvent e) {
try {
String fuhao = choice.getSelectedItem().toString();
workTogether.setFuhao(fuhao);
double number1 = Double.parseDouble(inputNumberOne.getText());
double number2 = Double.parseDouble(inputNumberTwo.getText());
double result = 0;
if(fuhao.equals("+"))
{
result = number1+number2;
}
else if(fuhao.equals("-"))
{
result = number1 - number2;
}
else if(fuhao.equals("*"))
{
result = number1 * number2;
}
else if(fuhao.equals("/"))
{
result = number1 / number2;
}
textShow.append(number1+" "+fuhao+" "+number2+" = "+result+"\n");
}catch(Exception exp) {
textShow.append("\n请输入数字字符\n");
}
}
}