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();
}
}