Hallo,
ich habe gleich mehrere Probleme was die jTable angeht. Ich arbeite mit dem eclipse (3.2.1) Visual Editor (1.2.1), den finde ich auch ganz gut, vorallem weil er mir als Javanoob einiges an Syntax abnimmt.
Ich bin gerade an einem Projekt, bei dem ich Werte in eine jTable
1.) selbst eintragen kann
2.) Werte berechnen und eintragen lasse
3.) per Drag and Drop und/oder Copy&Paste einfügen kann evtl. Kontextmenü -(geht noch nicht)
Außerdem soll
* die Tabelle aus einem jTextField rauslesen können, aus wie vielen Zeilen sie bestehen soll
* per JRadioButton.isSelected() erkennen können, ob sie editierbar bzw nicht editierbar ist (selektieren soll aber gehn)
* die linke Spalte durchnummeriert sein
Zur Veranschaulichung vorab mal n Screenshot von meiner Tabelle (links):
Der betreffende Code für die Tabelle sieht so aus:
Code für das Textfeld unten links:
Wie man das "Durchnummerieren" der ersten Spalte macht weis ich noch nicht. Mit einer for() vielleicht, wenn es nicht elleganter geht.
Ich habe auch schon einzelne Brocken, die mir die Suchfunktion zu meinen Problemen geliefert hat, ausprobiert - hat aber immer was nicht gepasst.
Hab ihr vielleicht Ideen, meinen Code um die fehlenden Features zu erweitern?
Danke vielmals jetzt schon^^
:? Senbei
ich habe gleich mehrere Probleme was die jTable angeht. Ich arbeite mit dem eclipse (3.2.1) Visual Editor (1.2.1), den finde ich auch ganz gut, vorallem weil er mir als Javanoob einiges an Syntax abnimmt.
Ich bin gerade an einem Projekt, bei dem ich Werte in eine jTable
1.) selbst eintragen kann
2.) Werte berechnen und eintragen lasse
3.) per Drag and Drop und/oder Copy&Paste einfügen kann evtl. Kontextmenü -(geht noch nicht)
Außerdem soll
* die Tabelle aus einem jTextField rauslesen können, aus wie vielen Zeilen sie bestehen soll
* per JRadioButton.isSelected() erkennen können, ob sie editierbar bzw nicht editierbar ist (selektieren soll aber gehn)
* die linke Spalte durchnummeriert sein
Zur Veranschaulichung vorab mal n Screenshot von meiner Tabelle (links):
Der betreffende Code für die Tabelle sieht so aus:
Code:
/**
* This method initializes jTable_Wertetabelle
*
* @return javax.swing.JTable
*/
private JTable getJTable_Wertetabelle() {
if (jTable_Wertetabelle == null) {
DefaultTableModel defaultTableModel = new DefaultTableModel();
defaultTableModel.addColumn("n"); //Spalte1 Überschrift
defaultTableModel.addColumn("Werte");
//Das Funktioniert (noch) nicht:
//Irgendwie sollte diese Zeile bei Änderung von jTextField_n.getText()
//(nochmal)aufgerufen werden
defaultTableModel.setRowCount(Integer.parseInt(jTextField_n.getText()));
defaultTableModel.setColumnCount(2);
jTable_Wertetabelle = new JTable();
jTable_Wertetabelle.setName("Wertetabelle");
jTable_Wertetabelle.setShowGrid(true);
jTable_Wertetabelle.setCellSelectionEnabled(true);
jTable_Wertetabelle.setRowHeight(18);
jTable_Wertetabelle.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
jTable_Wertetabelle.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jTable_Wertetabelle.setCellEditor(new TableCellEditor(){
public Component getTableCellEditorComponent(JTable arg0, Object arg1, boolean arg2, int arg3, int arg4) {
// TODO Auto-generated method stub
return null;
}
public void addCellEditorListener(CellEditorListener arg0) {
}
public void cancelCellEditing() {
}
public Object getCellEditorValue() {
// TODO Auto-generated method stub
return null;
}
/**
* Tabelle nicht editierbar,
* wenn "Eingabe von Verteilunen" ausgewählt
* -- FUNKTIONIERT NICHT !?
*/
public boolean isCellEditable(EventObject arg0) {
//TODO Auto-generated method stub
if (jRadioButton_Verteilungen.isSelected() == true)
return false;
else
return true;
}
public void removeCellEditorListener(CellEditorListener arg0) {
}
public boolean shouldSelectCell(EventObject arg0) {
// TODO Auto-generated method stub
return false;
}
/**
* Editieren abbrechen
* wenn "Eingabe von Verteilunen" ausgewählt
* -- FUNKTIONIERT NICHT !?
*/
public boolean stopCellEditing() {
// TODO Auto-generated method stub
if (jRadioButton_Verteilungen.isSelected() == true)
return true;
else
return false;
}});
jTable_Wertetabelle.setModel(defaultTableModel);
jTable_Wertetabelle.getColumnModel().getColumn(0).setPreferredWidth(40);
jTable_Wertetabelle.getColumnModel().getColumn(1).setPreferredWidth(380);
//damit kann ich nur aus der Tablle rausDraggn, aber nicht rein:
jTable_Wertetabelle.setDragEnabled(true);
//Copy&Paste bzw. DROP -Funktion später hier
jTable_Wertetabelle.setValueAt("0x0", 0, 0);
jTable_Wertetabelle.setValueAt("Test 0x1", 0, 1);
}
return jTable_Wertetabelle;
}
Code für das Textfeld unten links:
Code:
/**
* This method initializes jTextField_n
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField_n() {
if (jTextField_n == null) {
jTextField_n = new JTextField();
jTextField_n.setBounds(new Rectangle(194, 517, 50, 20));
jTextField_n.setPreferredSize(new Dimension(50, 20));
jTextField_n.setText("20");
jTextField_n.setMinimumSize(new Dimension(20, 20));
//Wenn is das Textfeld keine ganze Zahl eingegeben wird
//erscheint rechts daneben in einem jLabel die Nachricht:
//"Nur ganze Zahlen eingeben"
//Wenn eine gültige Zahl eingegeben, verschindet der Text wieder
// -- FUNKTIONIERT !
jTextField_n.addKeyListener(new java.awt.event.KeyListener() {
public void keyPressed(java.awt.event.KeyEvent e) {
// TODO Auto-generated Event stub keyPressed()
}
public void keyTyped(java.awt.event.KeyEvent e) {
try {
Integer.valueOf(jTextField_n.getText());
jLabel_Eingabefehler.setText("");
}
catch (NumberFormatException e1) {
jLabel_Eingabefehler.setText("Nur ganze Zahlen eingeben");
}
if (jLabel_Eingabefehler.getText()==""){
}
}
public void keyReleased(java.awt.event.KeyEvent e) {
}
});
}
return jTextField_n;
}
Wie man das "Durchnummerieren" der ersten Spalte macht weis ich noch nicht. Mit einer for() vielleicht, wenn es nicht elleganter geht.
Ich habe auch schon einzelne Brocken, die mir die Suchfunktion zu meinen Problemen geliefert hat, ausprobiert - hat aber immer was nicht gepasst.
Hab ihr vielleicht Ideen, meinen Code um die fehlenden Features zu erweitern?
Danke vielmals jetzt schon^^
:? Senbei