Swing程序求帮忙. SwingJava SEJava 调试Java屌丝求帮忙GUI Java 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写过一个与这界面一样的程序。我只知道有CheckBox,不知道能不能其他的。不过应该可以通过逻辑实现单选啊,另外点击后的那一列本来不就是个单选吗?或是我没看懂。 写一个Js function ,当用户选中的时候就将确定变为修改就可以了这个是用js事件完成的,挺简单的 如果用RadioButton,不能这么简单的处理,需要点击任意的RadioButton后这一列的其他RadioButton都要设置为unchecked状态,即要遍历这一列的所有单元格,不知是修改celllRenderer和cellEditor就可以的,因为还需要处理逻辑。预期十倍起赔,并且可以被对方随便到家里“搬彩电”.楼主这水平就敢这么干,以后肯定是个做大事的料。 lymoge大哥!!小弟就是想做一个”让用户能够看到明显的提示文字“,并且能够进行”对应的文字所在位置“的选择,给出下一步的用户意志的程序响应,的功能.小弟希望大哥相助!!公孙大哥!!小弟希望哥哥能够为小弟做一下您的方案的“代码相助”,小弟想把这个功能,“直接从哥哥这里借来”. 什么报答的话,小弟就不多扯了,都在日日夜夜的玩命中了!! From:http://stackoverflow.com/questions/11259579/adding-jradiobutton-into-jtableimport java.awt.BorderLayout;import java.awt.Component;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import java.beans.PropertyChangeSupport;import java.util.ArrayList;import java.util.List;import javax.swing.AbstractCellEditor;import javax.swing.JFrame;import javax.swing.JRadioButton;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.SwingUtilities;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException;import javax.swing.table.AbstractTableModel;import javax.swing.table.TableCellEditor;import javax.swing.table.TableCellRenderer;import javax.swing.table.TableColumn;public class TestTable { public class RadioButtonCellEditorRenderer extends AbstractCellEditor implements TableCellRenderer, TableCellEditor, ActionListener { private JRadioButton radioButton; public RadioButtonCellEditorRenderer() { this.radioButton = new JRadioButton(); radioButton.addActionListener(this); radioButton.setOpaque(false); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { radioButton.setSelected(Boolean.TRUE.equals(value)); return radioButton; } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { radioButton.setSelected(Boolean.TRUE.equals(value)); return radioButton; } @Override public void actionPerformed(ActionEvent e) { stopCellEditing(); } @Override public Object getCellEditorValue() { return radioButton.isSelected(); } } private JFrame f; private JTable table; private class MyObjectManager { private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); private List<MyObject> objects = new ArrayList<TestTable.MyObject>(); public void addObject(MyObject object) { objects.add(object); object.setManager(this); propertyChangeSupport.firePropertyChange("objects", null, object); } public List<MyObject> getObjects() { return objects; } public void setAsSelected(MyObject myObject) { for (MyObject o : objects) { o.setSelected(myObject == o); } } } private class MyObject { private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); private MyObjectManager manager; private String value; private boolean selected; public MyObject(String value) { this.value = value; } public PropertyChangeSupport getPropertyChangeSupport() { return propertyChangeSupport; } public String getValue() { return value; } public void setValue(String value) { this.value = value; propertyChangeSupport.firePropertyChange("value", null, value); } public MyObjectManager getManager() { return manager; } public void setManager(MyObjectManager manager) { this.manager = manager; propertyChangeSupport.firePropertyChange("manager", null, manager); } public boolean isSelected() { return selected; } public void setSelected(boolean selected) { if (this.selected != selected) { this.selected = selected; if (selected) { manager.setAsSelected(this); } propertyChangeSupport.firePropertyChange("selected", !selected, selected); } } } protected void initUI() { MyObjectManager manager = new MyObjectManager(); for (int i = 0; i < 200; i++) { MyObject object = new MyObject("Row " + (i + 1)); manager.addObject(object); } table = new JTable(new MyTableModel(manager)); table.setRowHeight(20); TableColumn column = table.getColumnModel().getColumn(1); column.setCellEditor(new RadioButtonCellEditorRenderer()); column.setCellRenderer(new RadioButtonCellEditorRenderer()); f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new JScrollPane(table), BorderLayout.CENTER); f.pack(); f.setVisible(true); } public class MyTableModel extends AbstractTableModel implements PropertyChangeListener { private final MyObjectManager manager; public MyTableModel(MyObjectManager manager) { super(); this.manager = manager; manager.propertyChangeSupport.addPropertyChangeListener(this); for (MyObject object : manager.getObjects()) { object.getPropertyChangeSupport().addPropertyChangeListener(this); } } @Override public void propertyChange(PropertyChangeEvent evt) { if (evt.getSource() == manager) { // OK, not the cleanest thing, just to get the gist of it. if (evt.getPropertyName().equals("objects")) { ((MyObject) evt.getNewValue()).getPropertyChangeSupport().addPropertyChangeListener(this); } fireTableDataChanged(); } else if (evt.getSource() instanceof MyObject) { int index = manager.getObjects().indexOf(evt.getSource()); fireTableRowsUpdated(index, index); } } @Override public int getColumnCount() { return 2; } @Override public int getRowCount() { return manager.getObjects().size(); } public MyObject getValueAt(int row) { return manager.getObjects().get(row); } @Override public Object getValueAt(int rowIndex, int columnIndex) { switch (columnIndex) { case 0: return getValueAt(rowIndex).getValue(); case 1: return getValueAt(rowIndex).isSelected(); } return null; } @Override public void setValueAt(Object value, int rowIndex, int columnIndex) { if (columnIndex == 1) { getValueAt(rowIndex).setSelected(Boolean.TRUE.equals(value)); } } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return columnIndex == 1; } @Override public Class<?> getColumnClass(int column) { switch (column) { case 0: return String.class; case 1: return Boolean.class; } return Object.class; } @Override public String getColumnName(int column) { switch (column) { case 0: return "Value"; case 1: return "Selected"; } return null; } } public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new TestTable().initUI(); } }); }} 公孙大哥!!!! 小弟就说两句话: 1.小弟继续擦活儿了!!感谢大哥的相助!!!! 2.每一位帮过小弟的高手,小弟都为对方起一个“心中的镜像”的名字. 大哥,如果您不在5天内为小弟的这个决定表态的话.小弟,从今天开始,就在CSDN叫您为:“乔布斯的左手”. 这是小弟观察哥哥的头像和昵称后,花了10分钟想的名字. 不知道哥哥觉得满意不.. 请问poi有函数能把excel xp格式的文件转换为2007吗? 请教一个很基础的java问题 正则表达式的问题 enterprisedt的ftp包用来编写FTP上传下载时,中文问题? 怎么在程序中设置java环境变量,既加载类的路径? 大家帮帮忙 java培训视频 请问怎么样把字符串转变成二进制存到文件中?急! 哪里有JBUILDER9 下载呀,大家帮帮我呀! compile 不了急救!!!!!!!!! 浅谈java线程的notify()和wait() 代码异常
楼主这水平就敢这么干,以后肯定是个做大事的料。
小弟希望大哥相助!!
公孙大哥!!小弟希望哥哥能够为小弟做一下您的方案的“代码相助”,小弟想把这个功能,“直接从哥哥这里借来”.
什么报答的话,小弟就不多扯了,都在日日夜夜的玩命中了!!
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.ArrayList;
import java.util.List;import javax.swing.AbstractCellEditor;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;public class TestTable { public class RadioButtonCellEditorRenderer extends AbstractCellEditor implements TableCellRenderer, TableCellEditor, ActionListener { private JRadioButton radioButton; public RadioButtonCellEditorRenderer() {
this.radioButton = new JRadioButton();
radioButton.addActionListener(this);
radioButton.setOpaque(false);
} @Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
radioButton.setSelected(Boolean.TRUE.equals(value));
return radioButton;
} @Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
radioButton.setSelected(Boolean.TRUE.equals(value));
return radioButton;
} @Override
public void actionPerformed(ActionEvent e) {
stopCellEditing();
} @Override
public Object getCellEditorValue() {
return radioButton.isSelected();
} } private JFrame f;
private JTable table; private class MyObjectManager {
private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
private List<MyObject> objects = new ArrayList<TestTable.MyObject>(); public void addObject(MyObject object) {
objects.add(object);
object.setManager(this);
propertyChangeSupport.firePropertyChange("objects", null, object);
} public List<MyObject> getObjects() {
return objects;
} public void setAsSelected(MyObject myObject) {
for (MyObject o : objects) {
o.setSelected(myObject == o);
}
}
} private class MyObject {
private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); private MyObjectManager manager; private String value; private boolean selected; public MyObject(String value) {
this.value = value;
} public PropertyChangeSupport getPropertyChangeSupport() {
return propertyChangeSupport;
} public String getValue() {
return value;
} public void setValue(String value) {
this.value = value;
propertyChangeSupport.firePropertyChange("value", null, value);
} public MyObjectManager getManager() {
return manager;
} public void setManager(MyObjectManager manager) {
this.manager = manager;
propertyChangeSupport.firePropertyChange("manager", null, manager);
} public boolean isSelected() {
return selected;
} public void setSelected(boolean selected) {
if (this.selected != selected) {
this.selected = selected;
if (selected) {
manager.setAsSelected(this);
}
propertyChangeSupport.firePropertyChange("selected", !selected, selected);
}
} } protected void initUI() {
MyObjectManager manager = new MyObjectManager();
for (int i = 0; i < 200; i++) {
MyObject object = new MyObject("Row " + (i + 1));
manager.addObject(object);
}
table = new JTable(new MyTableModel(manager));
table.setRowHeight(20);
TableColumn column = table.getColumnModel().getColumn(1);
column.setCellEditor(new RadioButtonCellEditorRenderer());
column.setCellRenderer(new RadioButtonCellEditorRenderer());
f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JScrollPane(table), BorderLayout.CENTER);
f.pack();
f.setVisible(true); } public class MyTableModel extends AbstractTableModel implements PropertyChangeListener { private final MyObjectManager manager; public MyTableModel(MyObjectManager manager) {
super();
this.manager = manager;
manager.propertyChangeSupport.addPropertyChangeListener(this);
for (MyObject object : manager.getObjects()) {
object.getPropertyChangeSupport().addPropertyChangeListener(this);
}
} @Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getSource() == manager) {
// OK, not the cleanest thing, just to get the gist of it.
if (evt.getPropertyName().equals("objects")) {
((MyObject) evt.getNewValue()).getPropertyChangeSupport().addPropertyChangeListener(this);
}
fireTableDataChanged();
} else if (evt.getSource() instanceof MyObject) {
int index = manager.getObjects().indexOf(evt.getSource());
fireTableRowsUpdated(index, index);
}
} @Override
public int getColumnCount() {
return 2;
} @Override
public int getRowCount() {
return manager.getObjects().size();
} public MyObject getValueAt(int row) {
return manager.getObjects().get(row);
} @Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return getValueAt(rowIndex).getValue();
case 1:
return getValueAt(rowIndex).isSelected();
}
return null;
} @Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
if (columnIndex == 1) {
getValueAt(rowIndex).setSelected(Boolean.TRUE.equals(value));
}
} @Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return columnIndex == 1;
} @Override
public Class<?> getColumnClass(int column) {
switch (column) {
case 0:
return String.class;
case 1:
return Boolean.class;
}
return Object.class;
} @Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "Value";
case 1:
return "Selected";
}
return null;
} } public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException,
UnsupportedLookAndFeelException {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.invokeLater(new Runnable() { @Override
public void run() {
new TestTable().initUI();
}
});
}
}
小弟就说两句话:
1.小弟继续擦活儿了!!感谢大哥的相助!!!!
2.每一位帮过小弟的高手,小弟都为对方起一个“心中的镜像”的名字.
大哥,如果您不在5天内为小弟的这个决定表态的话.小弟,从今天开始,就在CSDN叫您为:“乔布斯的左手”.
这是小弟观察哥哥的头像和昵称后,花了10分钟想的名字.
不知道哥哥觉得满意不..