学校向けのプログラミング中に発生した問題について質問があります。
月曜日から日曜日までの要約を作成します。ここでは、小さな会社の上司が従業員を見ることができ、それらの人々に時間帯を割り当てることができます。これにはJTableを使用しました。すべてのセルに、時間帯(朝、午後、夕方)を含むコンボボックスを実装したいと思います。
したがって、セルをクリックするときに、表示されるコンボボックスをクリックして、時間帯を選択できるようにします。次に、名前、割り当てられた日、および昼間をデータベースに入力できるようにします。 。(今のところ、それらを変数などに入れても問題ありません。データベースに入れます。)
これは、これまでのGUIのスクリーンショットです。GUI へのリンク
ここまでは順調ですね。GUIの見た目にはあまり力を入れていませんので、機能に焦点を当てる間はご容赦ください=)。私たちの唯一の問題は、名前、日付、新しい時間帯をデータベースに入れることができるように、変更されるセルにリンクされている日付と人を知るプログラムが必要なことです。
私たちはこれを試しました:あなたがリストのセルをクリックしたとき、私たちはclicklisterenを使用しました。そのメソッドにいくつかのコードを入れて、座標を見ることができたので、名前と日付を取得しました。それはうまくいった。次に、コンボボックスの実装を試みました。そこでも成功しました。ただし、セルがコンボボックスになると、クリック方式は使用されなくなります。
だからここに私たちの質問があります:これは私たちが望むものを手に入れるための適切な方法ですか?もしそうなら、コンボボックスを変更するときに名前と日付が何であるかを知ることができるようにリストを修正して、これをデータベースに入れるにはどうすればよいですか?そうでない場合は、何を変更する必要がありますか?目標を達成するために、代わりにどのような種類の他のリスナーまたは他のコードを使用する必要がありますか?
これが私たちのコードの一部です:
private javax.swing.table.DefaultTableModel model; //table model instantieren --teminste, straks.
model = new javax.swing.table.DefaultTableModel(); //Hier wordt de tabel gedefinieerd.
//We make the columns here:
model.addColumn("Naam werknemer:");
model.addColumn("Maandag");
model.addColumn("Dinsdag");
model.addColumn("Woensdag");
model.addColumn("Donderdag");
model.addColumn("Vrijdag");
model.addColumn("Zaterdag");
model.addColumn("Zondag");
//We make the combobox here:
myCombo = new JComboBox();
myCombo.addItem("-"); //not planned
myCombo.addItem("ochtend"); //add items
myCombo.addItem("middag");
myCombo.addItem("avond");
//This puts our combox in every cell of the first column
TableColumn tableColumn = jTable1.getColumnModel().getColumn(1);
//mouseclick listener
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTable1MouseClicked(evt);
}
});
//actionlisteneren bij action performed
myCombo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBox1ActionPerformed(evt);
}
});
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
Point pnt = evt.getPoint();
int row = jTable1.rowAtPoint(pnt); //This is the X
int col = jTable1.columnAtPoint(pnt); //this is the Y -> Date
String columnpje = ""+col;
naambijcel = ""+jTable1.getValueAt(row,0); //This variable will hold a name
if (columnpje.equals("1")){
datumbijcel = planningbeheermanager.getColumnArray().get(0);
}else if (columnpje.equals("2")){
datumbijcel = planningbeheermanager.getColumnArray().get(1);
}else if (columnpje.equals("3")){
datumbijcel = planningbeheermanager.getColumnArray().get(2);
}else if (columnpje.equals("4")){
datumbijcel = planningbeheermanager.getColumnArray().get(3);
}else if (columnpje.equals("5")){
datumbijcel = planningbeheermanager.getColumnArray().get(4);
}else if (columnpje.equals("6")){
datumbijcel = planningbeheermanager.getColumnArray().get(5);
}else if (columnpje.equals("7")){
datumbijcel = planningbeheermanager.getColumnArray().get(6);
}
//System.out.println(obj1);
//System.out.println(row +" "+ col);
}
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// selectbox ding ("" zorgen ervoor dat het object in een string kan worden gezet.
System.out.println("Dagdeel: "+myCombo.getSelectedItem());
System.out.println("Naam: "+naambijcel);
System.out.println("Datum: "+datumbijcel);
}
私たちのコードをもっと見たい場合、または他に質問がある場合は、お気軽にお問い合わせください!