【发布时间】:2022-01-25 17:07:32
【问题描述】:
我正在按下按钮,但由于某种原因它不起作用。
我想将JComboBox 的信息转移到这个JTable。
这是 GUI 的样子
请帮我解决这个问题。我怀疑这是一个逻辑错误。 我只是希望将Dropbox中的内容转移到第二张桌子(基本上是空的)
代码如下:
package com.mycompany.expoapp.newpackage;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.JFrame;
public class ExpoAPP extends javax.swing.JFrame {
DefaultTableModel model;
/**
* Creates new form ExpoAPP
*/
public ExpoAPP() {
initComponents();
}
@SuppressWarnings("unchecked")
private void initComponents() {
Dropbox = new javax.swing.JComboBox<>();
jScrollPane1 = new javax.swing.JScrollPane();
visit = new javax.swing.JTable();
jScrollPane2 = new javax.swing.JScrollPane();
notvisit = new javax.swing.JTable();
VISITED = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
Dropbox.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Select the Pavillion you Visited", "Algeria Pavillion", "Brazil Pavillion", "Chile Pavillion", "Denmark Pavillion", "Ethiopia Pavillion", "Fiji Pavillion", "Germany Pavillion", "Hungary Pavillion", "Indonesia Pavillion", "Japan Pavillion", "Korea Pavillion", "Luxembourg Pavillion", "Malaysia Pavillion", "Niger Pavillion", "Palestine Pavillion", "Qatar Pavillion", "Rawanda Pavillion", "Singapore Pavillion", "UK pavillion", "Venezuela Pavillion", "Yemen Pavillion", "Zambia Pavillion" }));
Dropbox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
DropboxActionPerformed(evt);
}
});
visit.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Visited"
}
));
visit.setAlignmentX(1.0F);
visit.setAlignmentY(1.0F);
visit.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
visitMouseClicked(evt);
}
});
jScrollPane1.setViewportView(visit);
notvisit.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{"Algeria Pavillion"},
{"Brazil Pavillion"},
{"Chile Pavillion"},
{"Denmark Pavillion"},
{"Ethiopia Pavillion"},
{"Fiji Pavillion "},
{"Germany Pavillion"},
{"Hungary Pavillion"},
{"Indonesia Pavillion"},
{"Japan Pavillion"},
{"Korea Pavillion"},
{"Luxembourg Pavillion"},
{"Malaysia Pavillion"},
{"Niger Pavillion"},
{"Palestine Pavillion"},
{"Qatar Pavillion"},
{"Rawanda Pavillion"},
{"Singapore Pavillion"},
{"UK pavillion"},
{"Venezuela Pavillion"},
{"Yemen Pavillion"},
{"Zambia Pavillion"}
},
new String [] {
"Not Visited"
}
));
notvisit.setAlignmentX(1.0F);
notvisit.setAlignmentY(1.0F);
jScrollPane2.setViewportView(notvisit);
VISITED.setText("Visited!");
VISITED.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
VISITEDActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(Dropbox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 34, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGap(132, 132, 132)
.addComponent(VISITED, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(61, 61, 61)
.addComponent(Dropbox, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(28, 28, 28)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 385, Short.MAX_VALUE)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(VISITED, javax.swing.GroupLayout.DEFAULT_SIZE, 38, Short.MAX_VALUE)
.addGap(25, 25, 25))
);
pack();
}// </editor-fold>
private void DropboxActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void visitMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
int selectedRow = visit.getSelectedRow();
String comboSub = model.getValueAt(selectedRow, 0).toString();
for (int i = 0; i < Dropbox.getItemCount(); i++)
{
if (Dropbox.getItemAt(i).toString().equalsIgnoreCase(comboSub))
{
Dropbox.setSelectedIndex(i);
}
}
}
private void VISITEDActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
/*
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(ExpoAPP.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(ExpoAPP.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(ExpoAPP.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(ExpoAPP.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ExpoAPP().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JComboBox<String> Dropbox;
private javax.swing.JButton VISITED;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable notvisit;
private javax.swing.JTable visit;
// End of variables declaration
}
【问题讨论】:
-
1) 为了尽快获得更好的帮助,edit 添加minimal reproducible example。它应该花费不到 190 行代码来实现 .. 无法在单个组合框和表格之间传输数据。 2)仔细选择标签。这被标记为小程序,仅此而已。没有涉及 (Java) 小程序,但 Java、Swing、JTable 和 JCombobox 都是相关的并且可作为标签使用。
-
我在您的问题中添加了您的 GUI 图像。您有一个保管箱和一个带有展馆列表的表格。为什么两者都需要?您要么有一个保管箱,要么有一个带有展馆列表的表格。带有展馆列表的桌子通常在两个桌子之间有按钮,可以在两个方向上移动项目。看来你想要的是所谓的双向选择表。
标签: java swing jtable jcombobox