您的位置:首页 > 产品设计 > UI/UE

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

2012-10-09 04:29 507 查看


主要用到的技巧包括界面嵌套布局(包括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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐