可以尝试设置下 setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
多行选中可以去修改ListSelectionModel的值~
如果是要编辑的话。。
需要自定义一个继承于DefaultTableModel的类
类似如下:
class MyJTableModel extends DefaultTableModel {
private boolean isCanEditOrNot = false
public MyJTableModel(Object[][] data, Object[] columnNames) {
setDataVector(data, columnNames)
}
@Override
public boolean isCellEditable(int row, int column) {
return isCanEditOrNot
}
public void setedit_not() {
isCanEditOrNot = false
}
public void setedit_can() {
isCanEditOrNot = true
}
}
然后在d出框的这个JDialog上调用MyJTableModel的对象的 setedit_can() 的方法 ~
这样设置就可以选择可以编辑了哈~
JDialog(Dialog owner, String title, boolean modal)创建一个具有指定标题、模式和指定所有者 Dialog 的对话框
你说的是模式对话框,构造JDialog时,指定modal为true就可以了。
有两种方法,一种如qeppykqsn所说的用模态,另一种就是使用掉用获取焦点方法。获取焦点的方法为requestFocus()组件一般都有这个方法,这个方法的作用就是使调用方法的组件获取焦点,你在主窗口和子窗口倒换时分别调用自己的requestFocus()方法就可以了。第一种用模态我做了一个例子你参考一下:
import java.awt.BorderLayout
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import java.awt.event.WindowAdapter
import java.awt.event.WindowEvent
import javax.swing.JButton
import javax.swing.JDialog
import javax.swing.JLabel
import javax.swing.SwingUtilities
import javax.swing.WindowConstants
public class JiaodianFrame extends javax.swing.JFrame implements ActionListener {
private JButton tan
private JDialog dialog
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JiaodianFrame inst = new JiaodianFrame()
inst.setLocationRelativeTo(null)
inst.setVisible(true)
}
})
}
public JiaodianFrame() {
super()
initGUI()
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)
{
tan = new JButton()
getContentPane().add(tan, BorderLayout.CENTER)
tan.setText("新窗口")
tan.addActionListener(this)
}
{
//第三个参数主要是设置模态的,true为模态,false为非模态。
dialog=new JDialog(this,"新窗口",true)
JLabel label=new JLabel("我就是新窗口")
dialog.getContentPane().add(label)
dialog.setDefaultCloseOperation(dialog.DO_NOTHING_ON_CLOSE)
dialog.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
dialog.setVisible(false)
}})
dialog.setSize(200, 150)
dialog.setLocationRelativeTo(null)
}
pack()
setSize(400, 300)
} catch (Exception e) {
e.printStackTrace()
}
}
public void actionPerformed(ActionEvent e) {
dialog.setVisible(true)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)