[Java GUI] 一个功能极简的翻译软件

[Java GUI] 一个功能极简的翻译软件_第1张图片

主要用到的技巧包括界面嵌套布局(包括BorderLayout, FlowLayout, GridLayout),匿名类,以及java.util.Map<K,V>泛型类的使用。Enjoy it !

import javax.swing.*;
import java.util.HashMap;
import java.util.Map;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TranslateDemo {
	public static void main( String[] args ) {
		new MyWin( "Translator" );
	}
}

class MyWin extends JFrame {

	private static final long serialVersionUID = 4965728863455140660L;
	
	private JTextField txtEn = new JTextField( 30 );
	private JTextField txtCN = new JTextField( 30 );
	
	private JLabel lblInfo = new JLabel( "Translation Demo", JLabel.CENTER );
	
	private JLabel lblEn = new JLabel( "English", JLabel.LEFT );
	private JLabel lblCN = new JLabel( "Chinese", JLabel.LEFT );	
	
	private JButton btnTrans = new JButton( "Translate" );
	
	private Map<String, String> dict = new HashMap<String, String>();
		
	MyWin( String title ) {
		super( title );
		Container cp = getContentPane();
		cp.add( lblInfo, BorderLayout.NORTH );
		
		JPanel enPanel = new JPanel();
		enPanel.add( lblEn );
		enPanel.add( txtEn );
		
		JPanel lblPanel = new JPanel( new GridLayout( 2, 1 ) );
		lblPanel.add( lblEn );
		lblPanel.add( lblCN );
		
		txtEn.setAutoscrolls( true );
		txtCN.setAutoscrolls( true );
		
		JPanel txtPanel = new JPanel( new GridLayout( 2, 1 ) );
		txtPanel.add( txtEn );
		txtPanel.add( txtCN );
		
		txtEn.requestFocus();
				
		JPanel panel = new JPanel( new BorderLayout() );
		panel.add( lblPanel, BorderLayout.WEST );
		panel.add( txtPanel, BorderLayout.CENTER );
		
		cp.add( panel, BorderLayout.CENTER );
		
		JPanel btnPane = new JPanel();
		btnPane.add( btnTrans );
		
		cp.add( btnPane, BorderLayout.SOUTH );
		
		dict.put( "Hello, Java!", "你好,JAVA!");
		dict.put( "good morning", "早上好" );
		
		btnTrans.addActionListener( new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				txtCN.setText( dict.get( txtEn.getText() ) );
			}
		});
		
		setSize( 200, 100 );
		setLocation( 450, 200 );
		setVisible( true );
		setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		pack();
	}
}


你可能感兴趣的:(java,String,Class,import,translation)