我正在研究jtable。对于该表的每一行(当我选择它时),我需要打开一个新的jframe。
打开应用程序后,我使用按钮进行简单搜索,第一次选择一行,它可以正常工作;
当我关闭刚打开的新jframe时问题开始我执行另一个搜索并选择
另一排;实际上,打开了多个具有相同内容的jframe。这就像发送了多个请求一样。
此代码位于主应用程序中:
Process1.join()
我尝试将以下代码行添加到SimpleSwingBrowser类
中和
private static String QUERY_BASED_ON_SITE2="from WordsToFind a where a.wordToFindName like '";
private void runQueryBasedOnName2() {
executeHQLQuery2(QUERY_BASED_ON_SITE2 + jTextField14.getText() + "%'");
}
private void executeHQLQuery2(String hql2) {
try {
Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
SessionFactory factory = configuration.buildSessionFactory(builder.build());
Session session = factory.openSession();
Query q2 = session.createQuery(hql2);
List resultsWords2 = (List) q2.list();
System.out.println("resultsWords2 ----> " + resultsWords2);
displayWords2(resultsWords2);
} catch (ClassNotFoundException ex) {
Logger.getLogger(ClientEditor.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
Logger.getLogger(ClientEditor.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if(!jTextField14.getText().trim().equals("")) {
runQueryBasedOnName2();
}
}
private void displayWords2(List resultsWords2) throws ClassNotFoundException, InstantiationException {
Vector<String> tableHeaders2 = new Vector<String>();
final Vector tableWords2 = new Vector();
tableHeaders2.add("Word Id");
for(Object ow : resultsWords2) {
WordsToFind words;
words = (WordsToFind)ow;
Vector<Object> oneRowWords = new Vector<Object>();
oneRowWords.add(words.getWordToFindId());
tableWords2.add(oneRowWords);
}
jTable4.setModel(new DefaultTableModel(tableWords2, tableHeaders2));
jTable4.setAutoCreateRowSorter(true);
jTable4.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jTable4.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int selectedRow = jTable4.getSelectedRow();
selectedRow = jTable4.convertRowIndexToModel(selectedRow);
SimpleSwingBrowser browser = new SimpleSwingBrowser();
browser.setVisible(true);
browser.loadURL("http://www.google.com");
browser.highlihtWord();
}
});
}
也
dispose();
我获得了相同的结果。 谢谢Alb
答案 0 :(得分:1)
JFrame让事件关闭,关闭后退出。
JFrame frame= new JFrame()
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// frame code here ..
frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
答案 1 :(得分:0)
将默认操作设置为关闭时退出将起作用。确保为要关闭的jframe设置
JFrame frame= new JFrame()
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
对于您在点击时打开的jframe使用dipose()
也可以正常工作
答案 2 :(得分:0)
当您从当前JFrames
创建新JFrame
时,请确保其中包含此段代码
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
Note
:不要创建相同JFrames
的新class
,为此创建一个单独的JFrame
。
答案 3 :(得分:0)
一些代码对调试问题非常有帮助。 我认为您在使用方法
时应将实例命名为null dispose()
请告诉我这是否对您有所帮助。或者如果您得到解决方案,请与我们分享。谢谢兄弟