创建一个GUI应用程序,用于转换若干种货币。(界面转换)

本文介绍了如何在Swing中创建菜单条(JMenuBar)、菜单(JMenu)和菜单项(JMenuItem),并演示了如何将它们添加到顶层容器中,以及如何通过监听器处理按钮事件。还展示了如何在JFrame和JPanel中布局组件,包括使用BorderLayout进行组件管理和货币兑换计算器的简单示例。
摘要由CSDN通过智能技术生成

1.菜单创建
2.监听器创建
3.按钮创建
4.方法填充

再Swing中,任何其他组件都必须位于一个顶层容器中,JFrame和JPanel面板是常用的顶层容器

JFrame窗口容器
JPanel面板容器

http://c.biancheng.net/view/1209.html

导入包:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

介绍:
java.awt.*;下的BorderLayout类这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST、CENTER。
例:

Panel p = new Panel();
 p.setLayout(new BorderLayout()); 
 p.add(new  Button("Okay"),BorderLayout.SOUTH);//为了方便起见,BorderLayout将缺少字符串说明的情况解释为常量 CENTER: 
 Panel p2 = new Panel(); 
 p2.setLayout(new BorderLayout()); 
 p2.add(new TextArea()); // Same as p.add(new TextArea(), BorderLayout.CENTER);

在窗口中添加菜单条,由三个类实现:
菜单条 JMenuBar(不可注册侦听器)
菜单 JMenu(不可注册侦听器)
菜单项 JMenuItem(可注册侦听器)

菜单条(JMenuBar)
将其设置为窗口的菜单条,需要setJMenuBar()方法;

JMenuBar TestJMenuBar=new JMenuBar(); 
  TestFrame.setJMenuBar(TestJMenuBar);

注:JMenuBar根据JMenu添加的顺序从左到右显示,并建立整数索引

菜单(JMenu)
添加菜单条后不会由任何菜单,需要添加,JMenu类的构造方法有4种:
JMenu() 构造一个空菜单。
JMenu(Action a) 构造一个菜单,菜单属性由相应的动作来提供。
JMenu(String s) 用给定的标志构造一个菜单。 JMenu(String s,Boolean b) 用给定的标志构造一个菜单。如果布尔值为false,那么当释放鼠标按钮后,菜单项会消失;如果布尔值为true,那么当释放鼠标按钮后,菜单项仍将显示。这时的菜单称为 tearOff 菜单。

构造结束后,使用JMenuBar类的add方法添加到菜单条中

菜单项(JMenuItem)
向菜单中添加内容,可以是菜单项,可以是子菜单,可以是分隔符
在构造完后,使用JMenu类的add方法添加到菜单种

创建“确认”按钮(Swing 组件):

https://blog.csdn.net/qq_38286331/article/details/80197559

所涉及到的错误:

不能把顶级窗口放到一个容器中

https://blog.csdn.net/jasper_success/article/details/6800057

所涉及到的问题:

JTextArea和JPanel下的面板

http://c.biancheng.net/view/1221.html //文本域组件TextArea
https://www.cnblogs.com/happyxiaoyu/p/5750915.html
//JPanel下的面板

下面附上源码:

package zc;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.JTextPane;

public class test8_2 {

	private JFrame frame;
	private JTextField textField;
	private JTextField textField_1;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					test8_2 window = new test8_2();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public test8_2() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 505, 170);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);
		
		JPanel panel = new JPanel();
		panel.setBounds(-1, -1, 489, 40);
		frame.getContentPane().add(panel);
		panel.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("货币名称");
		lblNewLabel.setBounds(5, 11, 54, 15);
		panel.add(lblNewLabel);
		

		
		JComboBox comboBox = new JComboBox();
		comboBox.setBounds(67, 7, 102, 21);
		comboBox.addItem("CNY");
		comboBox.addItem("USD");
		comboBox.addItem("GBP");
		panel.add(comboBox);
		
		JLabel lblNewLabel_1 = new JLabel("所兑换货币名称");
		lblNewLabel_1.setBounds(179, 11, 93, 15);
		panel.add(lblNewLabel_1);
		
		JComboBox comboBox_1 = new JComboBox();
		comboBox_1.setBounds(293, 8, 83, 21);
		comboBox_1.addItem("CNY");
		comboBox_1.addItem("USD");
		comboBox_1.addItem("GBP");
		panel.add(comboBox_1);
		
		JPanel panel_1 = new JPanel();
		panel_1.setBounds(1, 43, 489, 39);
		frame.getContentPane().add(panel_1);
		panel_1.setLayout(null);
		
		textField = new JTextField();
		textField.setBounds(10, 10, 166, 19);
		panel_1.add(textField);
		textField.setColumns(10);
		
		textField_1 = new JTextField();
		textField_1.setBounds(289,10, 166, 20);
		panel_1.add(textField_1);
		textField_1.setColumns(10);
		
		
		JButton btnNewButton = new JButton("兑换");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				double money = Double.parseDouble(textField.getText());    //从文本框获取输入
                double money2=1;
                switch (comboBox.getSelectedIndex()){                    //getSelectedIndex()获取JComboBox中参数值
                    case 0:{
                        if(comboBox_1.getSelectedIndex()==0){
                            money2=money;
                        }
                        if(comboBox_1.getSelectedIndex()==1){
                            money2=money*0.1264;
                        }
                        if(comboBox_1.getSelectedIndex()==2){
                            money2=money*0.1505;
                        }
                        textField_1.setText(String.valueOf(money2));
                    }//人民币兑换
                    break;
                    case 1:{
                        if(comboBox_1.getSelectedIndex()==0){
                            money2=money*7.91;
                        }
                        if(comboBox_1.getSelectedIndex()==1){
                            money2=money;
                        }
                        if(comboBox_1.getSelectedIndex()==2){
                            money2=money*1.1833;
                        }
                        textField_1.setText(String.valueOf(money2));      //将结果显示再第二个文本框
                    }//欧元兑换
                    break;
                    case 2:{
                        if(comboBox_1.getSelectedIndex()==0){
                            money2=money*6.645;
                        }
                        if(comboBox_1.getSelectedIndex()==1){
                            money2=money*0.8451;
                        }
                        if(comboBox_1.getSelectedIndex()==2){
                            money2=money;
                        }
                        textField_1.setText(String.valueOf(money2));
                    }//美元兑换
                    break;
                    default:
                        break;
                
                

			}
			}
		}	
				
	);
		
		btnNewButton.setBounds(386, 7, 93, 23);
		panel.add(btnNewButton);
		


	}

}

附图:
在这里插入图片描述
注:进率之间的转换存在问题没有修改,嘿嘿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麒麟NG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值