JTABLE 一个小格子添加2个按钮实现国际化 使用观察者设计模式
来源:互联网 发布:数据帧 格式 14字节 编辑:程序博客网 时间:2024/04/30 08:51
package org.primary.c15UI.class08;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import java.awt.Component;
import javax.swing.JTable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Locale;
import java.util.Observable;
import java.util.Observer;
import java.util.ResourceBundle;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
public class ButtonTable {
public static JFrame jFrame;
private JTable table;
private JButton btnNewButton;
private boolean flag=true;
public ButtonTable(){
jFrame=new JFrame();
jFrame.setSize(600, 400);
jFrame.setDefaultCloseOperation(jFrame.DISPOSE_ON_CLOSE);
jFrame.setLocationRelativeTo(null);
table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
},
new String[] {
"New column", "New column", "New column", "操作"
}
));
SimpleButton sButton=new SimpleButton();
TableColumn tc=table.getColumnModel().getColumn(3);
tc.setPreferredWidth(200);
tc.setCellEditor(sButton);
tc.setCellRenderer(sButton);
table.setRowHeight(50);
JScrollPane js=new JScrollPane(table);
jFrame.getContentPane().add(js);
btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Locale locale=null;
if(flag){
locale=new Locale("en","US");
flag=false;
}else {
locale=new Locale("zh","CN");
flag=true;
}
MyNative.getMyNative().setLocale(locale);
jFrame.setVisible(false);
jFrame.setVisible(true);
}
});
js.setRowHeaderView(btnNewButton);
}
public static void main(String[] args) {
ButtonTable zh=new ButtonTable();
zh.jFrame.setVisible(true);
}
}
class SimpleButton extends AbstractCellEditor implements TableCellEditor,TableCellRenderer
{
private JPanel jPanel=new JPanel();
private JButton b1=new HButton("name", MyNative.getMyNative());
private JButton b2=new HButton("name1", MyNative.getMyNative());
private MyNative mn=MyNative.getMyNative();
public SimpleButton(){
/*b1.setText(mn.getValue("name"));
b2.setText(mn.getValue("name1"));*/
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("*************");
}
});
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("+++++++++++");
}
});
jPanel.add(b1);
jPanel.add(b2);
}
@Override
public Object getCellEditorValue() {
// TODO Auto-generated method stub
return null;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return jPanel;
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
return jPanel;
}
}
class HButton extends JButton implements Observer{
private String name;
private MyNative mn=MyNative.getMyNative();
public HButton(String name,Observable observable) {
this.name=name;
setText(mn.getValue(name));
observable.addObserver(this);
}
@Override
public void update(Observable o, Object arg) {
this.setText(mn.getValue(name));
System.out.println(mn.getValue(name));
}
}
class MyNative extends Observable{
private Locale locale= Locale.getDefault();
private static MyNative myNative=new MyNative();
private MyNative(){}
public static MyNative getMyNative(){
return myNative;
}
public String getValue(String value) {
/**
* base_en_US .properties
* base_zh_CN.properties
*/
ResourceBundle rb= ResourceBundle.getBundle("base", locale);
return rb.getString(value);
}
public void setLocale(Locale locale) {
this.locale = locale;
this.setChanged();
this.notifyObservers();
}
}
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import java.awt.Component;
import javax.swing.JTable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Locale;
import java.util.Observable;
import java.util.Observer;
import java.util.ResourceBundle;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
public class ButtonTable {
public static JFrame jFrame;
private JTable table;
private JButton btnNewButton;
private boolean flag=true;
public ButtonTable(){
jFrame=new JFrame();
jFrame.setSize(600, 400);
jFrame.setDefaultCloseOperation(jFrame.DISPOSE_ON_CLOSE);
jFrame.setLocationRelativeTo(null);
table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
},
new String[] {
"New column", "New column", "New column", "操作"
}
));
SimpleButton sButton=new SimpleButton();
TableColumn tc=table.getColumnModel().getColumn(3);
tc.setPreferredWidth(200);
tc.setCellEditor(sButton);
tc.setCellRenderer(sButton);
table.setRowHeight(50);
JScrollPane js=new JScrollPane(table);
jFrame.getContentPane().add(js);
btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Locale locale=null;
if(flag){
locale=new Locale("en","US");
flag=false;
}else {
locale=new Locale("zh","CN");
flag=true;
}
MyNative.getMyNative().setLocale(locale);
jFrame.setVisible(false);
jFrame.setVisible(true);
}
});
js.setRowHeaderView(btnNewButton);
}
public static void main(String[] args) {
ButtonTable zh=new ButtonTable();
zh.jFrame.setVisible(true);
}
}
class SimpleButton extends AbstractCellEditor implements TableCellEditor,TableCellRenderer
{
private JPanel jPanel=new JPanel();
private JButton b1=new HButton("name", MyNative.getMyNative());
private JButton b2=new HButton("name1", MyNative.getMyNative());
private MyNative mn=MyNative.getMyNative();
public SimpleButton(){
/*b1.setText(mn.getValue("name"));
b2.setText(mn.getValue("name1"));*/
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("*************");
}
});
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("+++++++++++");
}
});
jPanel.add(b1);
jPanel.add(b2);
}
@Override
public Object getCellEditorValue() {
// TODO Auto-generated method stub
return null;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return jPanel;
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
return jPanel;
}
}
class HButton extends JButton implements Observer{
private String name;
private MyNative mn=MyNative.getMyNative();
public HButton(String name,Observable observable) {
this.name=name;
setText(mn.getValue(name));
observable.addObserver(this);
}
@Override
public void update(Observable o, Object arg) {
this.setText(mn.getValue(name));
System.out.println(mn.getValue(name));
}
}
class MyNative extends Observable{
private Locale locale= Locale.getDefault();
private static MyNative myNative=new MyNative();
private MyNative(){}
public static MyNative getMyNative(){
return myNative;
}
public String getValue(String value) {
/**
* base_en_US .properties
* base_zh_CN.properties
*/
ResourceBundle rb= ResourceBundle.getBundle("base", locale);
return rb.getString(value);
}
public void setLocale(Locale locale) {
this.locale = locale;
this.setChanged();
this.notifyObservers();
}
}
0 0
- JTABLE 一个小格子添加2个按钮实现国际化 使用观察者设计模式
- 1CCTableView的使用,TableView响应和小格子tableView实现
- 设计模式: 自己手动实现一个观察者设计模式
- JTable单元格添加按钮
- 实现设计模式:观察者模式
- 【设计模式】使用unity实现观察者模式(delegate,event)
- C++设计模式实现--观察者
- C++设计模式实现--观察者
- 设计模式-观察者模式,以及如何使用观察者来为app实现即时通讯功能
- 一天一个设计模式(3):观察者模式
- 一口一个设计模式--观察者模式
- 一天一个设计模式---观察者模式
- 一天一个设计模式之观察者模式
- 每天一个设计模式之观察者模式
- HeadFirst 设计模式 2观察者模式 (气象站实现)
- 设计模式2 观察者模式
- 设计模式(2)--观察者模式
- 设计模式-2-观察者模式
- iBATIS事务
- 准入控制解决方案的汇总
- Linux环境变量设置总结
- 互联网公司,传统软件公司,传统电子产品公司,嵌入式公司的赢利模式
- Linux企业级项目实践之网络爬虫(9)——通过URL抓取网页内容
- JTABLE 一个小格子添加2个按钮实现国际化 使用观察者设计模式
- 程序设计实习 构造函数相关 析构函数
- Queue的顺序实现
- 链表的定义
- 链式Queue的实现
- 网易新闻首页的实现,可以添加,移除标签,自动滚动图片,无限左右切换图片
- http://movie.douban.com/doulist/
- java实现最长公共子序列和最长公共子字符串
- FFmpeg深入分析之零-基础