我想将我在JTable中选择的项目的名称放在JLabel中,每当我点击表格中的新项目时,JLabel中的文本也会发生变化 谁能告诉我,我应该在java中学到什么来制作它?
答案 0 :(得分:2)
您应该了解非常基本的Swing编程,并对TableModel
,SelectionModel
和ListSelectionListener
(这是您的目标的关键)有更深入的了解。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class TableSelectionToLabel {
private static JTable t = new JTable(new String[][]{{"1,1", "1,2"}, {"2,1", "2,2"}},
new String[]{"1", "2"});
private static JLabel l = new JLabel("Your selction will appear here");
private static JFrame f = new JFrame("Table selection listener Ex.");
private static ListSelectionListener myListener = new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int col = t.getColumnModel().getSelectionModel().getLeadSelectionIndex();
int row = t.getSelectionModel().getLeadSelectionIndex();
try {
l.setText(t.getModel().getValueAt(row, col).toString());
} catch (IndexOutOfBoundsException ignore) {
}
}
};
public static void main(String[] args) {
t.getSelectionModel().addListSelectionListener(myListener);
t.getColumnModel().getSelectionModel().addListSelectionListener(myListener);
f.getContentPane().add(t, BorderLayout.NORTH);
f.getContentPane().add(l, BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
}
我修改了代码以收听模型 AND 列模型中的两个选择事件,以获得更准确的结果。
答案 1 :(得分:1)
首先创建JLabel
:
JLabel label = new JLabel();
然后在表格中添加一个监听器以供选择:
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
label.setText(table.getValueAt(table.getSelectedRow(), table.getSelectedColumn()));
}
});