Jtable + Mouse og reg af click
jeg har i følgende prg "en dags-tabel", hvor selve tabellen er sat til, at man ikke skal kunne skrive i felterne, men via et dobbelt-klik, skal der enten hældes forvalgte data ind, hvis feltet er tomt.Hvis der står data i feltet skal disse hentes ud..
Koden er vedlagt - på forhånd tak
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
class PlanTabelFrame extends JFrame {
public PlanTabelFrame( String title ) {
super( title );
PlanTabelModel tableModel = new PlanTabelModel();
JTable tableView = new JTable( tableModel );
// Renderer til centreret tekst
tableView.getColumn( tableModel.getColumnName( 0 ) )
.setCellRenderer( new CentreretTextRenderer() );
for ( int col=2; col<tableModel.getColumnCount(); col++ )
tableView.getColumn( tableModel.getColumnName( col ) )
.setCellRenderer( new CentreretTextRenderer() );
// plads til stationsnavn
tableView.getColumn( tableModel.getColumnName( 1 ) )
.setPreferredWidth( 170 );
JScrollPane pane = new JScrollPane( tableView );
getContentPane().add( pane, BorderLayout.CENTER );
addWindowListener( new ApplicationTerminator() );
setSize( 500, 100 );
setVisible( true );
}
class ApplicationTerminator extends WindowAdapter {
public void windowClosing( WindowEvent e ) {
System.exit( 0 );
}
}
}
fil 2 = model for JTable
import javax.swing.table.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
class SkemaTableModel extends AbstractTableModel
{
public static final String[] TILSTANDE =
{ " "," Anders Sørensen ", " Erhverv", " Privat", " Manøvrebane", " ???" };
private String[][] skema;
int row=0;
int col=0;
public static final String[] DAGE =
/* { "Mandag",
"Tirsdag",
"Onsdag",
"Torsdag",
"Fredag",};
*/
{"Elev","Bemærkning" };
private String[] tider =
{ " 07:00"," 07:15"," 07:30"," 07:45",
" 08:00"," 08:15"," 08:30"," 08:45",
" 09:00"," 09:15"," 09:30"," 09:45",
" 10:00"," 10:15"," 10:30"," 10:45",
" 11:00"," 11:15"," 11:30"," 11:45",
" 12:00"," 12:15"," 12:30"," 12:45",
" 13:00"," 13:15"," 13:30"," 13:45",
" 14:00"," 14:15"," 14:30"," 14:45",
" 15:00"," 15:15"," 15:30"," 15:45",
" 16:00"," 16:15"," 16:30"," 16:45",
" 17:00"," 17:15"," 17:30"," 17:45",
"Natte-kørsel",
};
public void udskriv()
{
for ( int dag=0; dag<1; dag++ )
for ( int lektion=0; lektion<48; lektion++ )
System.out.println( skema[dag][lektion] ); // indhold til gem og hent
}
public SkemaTableModel()
{
skema = new String[DAGE.length][tider.length];
for ( int dag=0; dag<DAGE.length; dag++ )
for ( int lektion=0; lektion<tider.length; lektion++ )
skema[dag][lektion] = TILSTANDE[0]; // indhold til gem og hent
}
public String getColumnName( int col )
{
if ( col > 0 )
return DAGE[col-1];
else
return "Kl.";
}
public int getColumnCount() {
return DAGE.length + 1;
}
public int getRowCount() {
return tider.length;
}
public boolean isCellEditable( int row, int col )
{
if ( col > 0 && skema[col-1][row].length()>0)
{
return true;
}
else
{
return false;
}
}
// kommer efter indskrivning <enter> eller <tab> eller anden flytning
public void setValueAt( Object value, int row, int col )
{
String indTxt = (String)value;
String udTxt = skema[col-1][row];
String txt="Torben";
String[] sList = {"Ja", "Nej"};
//if( udTxt.length()>1 && col > 0 && indTxt.length()==1)
if( udTxt.equals(indTxt) && col > 0 && udTxt.length()>1)
{
int option = JOptionPane.showOptionDialog(null,
"Vil du hente elevens oplysninger",
" Hente Elev - Oplysninger", JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE, null, sList, sList[0]);
if( option == 0)
skema[col-1][row] = txt;
System.out.println(" UD "+indTxt+" "+udTxt );
}
else
if( indTxt.length()==1 && col > 0 && udTxt.equals(" ") )
{
int option = JOptionPane.showOptionDialog(null,
"Vil du indføre en tids-bestilling for "+txt,
" Reserver en Køre - Tid", JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE, null, sList, sList[0]);
if( option == 0)
skema[col-1][row] = txt;
System.out.println(" TOM "+indTxt+" "+udTxt );
}
else
if( indTxt.length()<2 && col > 0 && udTxt.length()>0)
{
int option = JOptionPane.showOptionDialog(null,
"Du er ved at slette en tids-bestilling",
" Slet en Køre - Tid", JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE, null, sList, sList[0]);
if( option == 0)
skema[col-1][row] = " ";
System.out.println(" SLET "+indTxt+" "+udTxt );
}
else
if( indTxt.length()>0 && col > 0 && udTxt.length()==1)
{
skema[col-1][row] = indTxt;
System.out.println(" IND "+indTxt+" "+udTxt );
}
}
// kører når musen bevæges d.v.s hele tiden
public Object getValueAt( int row, int col )
{
if ( col > 0 )
{
// boolean ok =isCellSelected(row,col);
// if( ok=false)
// System.out.println(row+" - "+col);
return skema[col-1][row];
}
else
return tider[row];
}
//*********************************************************
public int getSelectedRow()
{
System.out.println("Selected Row");
return row;
}
public int getSelectedColomn()
{
System.out.println("Selected Col");
return col;
}
//*** kører når mus bevæges d.v.s hele tiden
public boolean isCellSelected(int row,int col)
{
//System.out.println("Selected");
return true;
}
public boolean isEditing()
{
System.out.println("Editing");
return true;
}
public int getEditingRow()
{
System.out.println("Row = ");
return -1;
}
public int getEditingColumn()
{
System.out.println("Col = ");
return -1;
}
}
