锘??xml version="1.0" encoding="utf-8" standalone="yes"?>typeTable.setPreferredScrollableViewportSize(typeTable.getPreferredSize());
JScrollPane typeTableScrollPane=new JScrollPane(typeTable);
mt.pack();
mt.setVisible(true);
import java.awt.*;
import javax.swing.*;
public class MixerTest2 extends JFrame {
public MixerTest2() {
super("Customer Editor Test");
setSize(600,160);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JTable typeTable=new JTable();
typeTable=new JTable(new String [][] {
{"312fs", "33232", "32", "32"},
{"3212fsdfa12", "3322", "32", "32"},
{"3212fa12", "321212", "321212", "321212"},
{"3212gsds12", "321212", "321212", "321212"}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
);
typeTable.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
typeTable.getColumnModel().getColumn(0).setPreferredWidth(10);
typeTable.getColumnModel().getColumn(1).setPreferredWidth(30);
JScrollPane typeTableScrollPane=new JScrollPane(typeTable);
getContentPane().add(typeTableScrollPane);
}
public static void main(String args[]) {
MixerTest2 mt = new MixerTest2();
mt.setVisible(true);
}
}
鑰屽湪鎴戠殑榪欎釜鏍蜂緥紼嬪簭涓紝JFrame 瀹藉害涓?00錛岃繙榪滃ぇ浜嶫Table 鐨勫搴︺傚洜姝ょ▼搴忔寜鐓ф垜鐨勫垵濮嬪肩粯鍒跺畬JTable涔嬪悗錛屼細鑷姩鐨勬牴鎹甁Frame 鐨勫ぇ灝忓強甯冨眬鍐嶉噸鏂拌皟鏁淬傝繖鏍峰氨閫犳垚涓庝唬鐮佷笉絎︾殑鎯呭喌銆?br />
鍦ㄧ綉涓婃煡璇㈠埌錛屾湁浜烘帹鑽愪嬌鐢?font style="background-color: #dfd8f1">Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);榪欐牱浼氳В鍐抽棶棰橈紝浣嗗悓鏃舵垜浠篃澶卞幓浣跨敤AutoResizeMode鐨勫ソ澶勩?br />
灝嗕唬鐮佷慨鏀瑰涓嬶紝闂瑙e喅錛?br />
typeTable.setPreferredScrollableViewportSize(typeTable.getPreferredSize());
JScrollPane typeTableScrollPane=new JScrollPane(typeTable);
mt.pack();
mt.setVisible(true);
]]>
2錛夊畬鎴愬竷灞錛?br />
3錛夎皟鐢?validate();浣挎柊甯冨眬鏈夋晥銆?/font>
瀛楁 | 鎻忚堪 |
ID | |
fee |
|
description |
|
type |
|
date | 璁板綍鎻掑叆鏃ユ湡 |
TableCellRenderer灝辨槸鐢ㄦ潵緇樺埗灞曠ず褰撳墠cell鍗曞厓鏁板煎唴瀹圭殑錛屼綘鍙互鐢ㄦ枃瀛椼佹暟鍊兼垨鑰呭浘鐗囨潵琛ㄧず鍐呭錛屽綋鐒舵渶寮哄ぇ灞曠ず鏂瑰紡鐨勫氨鏄氳繃鑷畾涔夎嚜宸辯殑renderer緇勪歡錛岄氳繃Java2D鏉ョ粯鍒跺悇縐嶅ぉ鑺變貢鍧犵殑鏁堟灉銆?/span>
TableCellEditor涓昏鏄敤鏉ュ綋鐢ㄦ埛鐐瑰嚮鍦ㄥ叿浣揷ell鏃惰繘琛岀紪杈戠殑緇勪歡錛屾墍浠ableCellEditor闄や簡鍏鋒湁TableCellRenderer涓鏍風殑緇樺埗鍔熻兘澶栬繕鍙互榪涜浜や簰鍔ㄤ綔錛屼緥濡傚湪cell涓婂嚭鐜頒笅鎷夋銆佸嬀閫夋鐢氳嚦閫氳繃鎸夐挳寮瑰嚭鏇村鏉傜殑瀵硅瘽妗嗚鐢ㄦ埛榪涜杈撳叆緙栬緫銆?/span>
浠ヤ笅鏄湪cell涓祵鍏tart銆乻top涓や釜鎸夐挳鐨勮〃鏍鹼紝娉ㄦ剰榪欓噷鐨剅enderer鍙槸鐢ㄦ潵鏄劇ず鏁堟灉錛屽茍娌℃湁榪涜浜や簰鍔ㄤ綔錛岀湡姝h繘琛屽姩浣滅殑鏄綋浣犲皢榧犳爣鐐瑰嚮鍦╟ell涓婃椂錛孞Table瀹氫綅涓婂幓鐨別ditor錛屾墍浠ヤ笉瑕佸緬鍔沖湪renderer涓婂仛鐐瑰嚮浜嬮」澶勭悊錛宺enderer鏄笉浼氭帴鍙楀埌浜や簰浜嬮」鐨勶紝renderer鍙槸涓敾絎旓紝浣犵湅鍒扮殑start銆乻top鎸夐挳鍙槸榪欎釜鐢葷瑪鐢誨嚭鏉ョ殑鍐呭錛屾槸铏氱殑騫舵病鏈夌湡姝g殑緇勪歡鍦ㄤ笂闈€?/p>
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class TableTest1 extends JFrame {
JTable table;
String[] states = new String[]{"stop", "stop", "stop"};
// model
class TableModel extends AbstractTableModel{
public int getColumnCount() {
return 2;
}
public int getRowCount() {
return states.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
if(columnIndex == 0){
return states[rowIndex];
}
return null;
}
public String getColumnName(int columnIndex) {
if(columnIndex == 0){
return "state";
}else{
return "operate";
}
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
if(columnIndex == 0){
return false;
}else{
return true;
}
}
}
// cell editor
class Editor extends AbstractCellEditor implements TableCellEditor, ActionListener {
int row;
JTable table;
JPanel panel;
JButton start;
JButton stop;
Editor(){
panel = new JPanel();
panel.setLayout(new GridLayout(1, 2));
start = new JButton("start");
stop = new JButton("stop");
start.addActionListener(this);
stop.addActionListener(this);
panel.add(start);
panel.add(stop);
}
public Object getCellEditorValue() {
return null;
}
public Component getTableCellEditorComponent(JTable table,
Object value,
boolean isSelected,
int row,
int column) {
this.table = table;
this.row = row;
return panel;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == start){
states[row] = "start";
}else{
states[row] = "stop";
}
((AbstractTableModel)table.getModel()).fireTableCellUpdated(row, 0);
}
}
// cell render
class Renderer extends JComponent implements TableCellRenderer{
JPanel panel;
JButton start;
JButton stop;
Renderer(){
panel = new JPanel();
panel.setLayout(new GridLayout(1, 2));
start = new JButton("start");
stop = new JButton("stop");
panel.add(start);
panel.add(stop);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return panel;
}
}
public TableTest1(){
super("renderer and editor self-existent");
table = new JTable(new TableModel());
TableColumn tableColumn = table.getColumnModel().getColumn(1);
tableColumn.setCellRenderer(new Renderer());
tableColumn.setCellEditor(new Editor());
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
this.setSize(500, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TableTest1().show();
}
}