Events on empty JTable

Thought I'd post a solution I found on comp.lang.java.gui from Christian Kaufhold.
I have a scrollable JTable on which I establish a popup listener. This works fine as long as the event is received in the table rows. If the table contains fewer rows than occupy the view port and the user clicks below then the event is not received. This becomes crucial when the table model has no rows at all, when the event can never be received.
I used this code:
JTable table = new JTable(data)
     public boolean getScrollableTracksViewportHei�ght()
          Component parent = getParent();
          if (parent instanceof JViewport)
               return parent.getHeight() > getPreferredSize().height;
          return false;
}; Thus the table is always at least as high as the viewport.
It has the effect that the entire viewport has the table background colour, but that's OK with me.

Use code tags to post codes -- [code]CODE[/code] will display asCODEOr click the CODE button and paste your code between the {code} tags that appear.
To get better help sooner, post a [_SSCCE_|http://mindprod.com/jgloss/sscce.html] that clearly demonstrates your problem.
db

Similar Messages

  • JDev902: how open form with empty JTable?

    Background: Using the wizard I have created a number of JClient forms pulling their data from a BC-layer. However, some forms fill only very slowly because of the large number of rows of the underlying tables. Sometimes it would be better to open a form with an empty JTable and let the user formulate a query and pull in the desired data.
    Question: How do I open a form without automatically filling its JTable from the BC-layer? The old method of setting "...WHERE 1 = 0" seems rather - well - old! Is there a more elegant way?
    Thanks for any help!
    Sten Jones

    You can bring up the panel that the JTable is contained in without executing the query on it (remove executeQuery()) call. See JClient component demo on the JDeveloper HowTo pages on how to detail data-binding and query execution. Basically what these panels do is not setup the UI till it's displayed and then perform the binding. You can take it a step further by also not executing the query and executing it only after the user says so.
    Another way would be to "force" the startup to be in find mode. So, instead of executing query for the panels, you may want to set the table in find mode so that the user is able to enter query right up, when the UI comes up.

  • Enable Dropping into Empty JTables

    Hi there!
    I've just posted another blog on Swing Drag and Drop. Learn how to enable dropping into empty JTables with a single method call in Mustang, or a simple override in earlier versions of J2SE.
    http://weblogs.java.net/blog/shan_man/archive/2006/01/enable_dropping.html
    All the best,
    Shannon Hickey (Swing Team)

    Hi,
    It looks like below bug in SQLDeveloper.
    Bug 6326721: Updatable views - could not insert, update and delete as for tables.
    Please close the thread, if I answered your question.
    Regards,
    Satishbabu Gunukula
    http://oracleracexpert.blogspot.com

  • All iPhoto events appear empty in "Event" view

    When I view my iPhoto 11 library by "Events", I get the usual listing of all my events, and I am able to scroll through the preview pictures at this level within the individual small Event icon. The key photo shows as normal.  However, if I double click on an event, the event comes up but without any photos showing, not even an empty grey window frame for each photo.  The name of the event shows correctly but on the top right corner it simply says NO PHOTOS.
    Now the strange thing is that if I view the library by "Photos" or "Faces" or via Albums etc, I see all my photos and they all appear to be in their corresponding events as normal.  I can even right click on one of my photos and click "Show Event" and then the correct event comes up with all the photos showing.  But if I then go back to "All Events", I will see all the events but if I select one (even one I have just viewed), it will then say NO PHOTOS.
    I have deleted the plist files (included the "locked" ones) from both iPhoto and Aperture but this doesn't resolve the problem.  I've also done a "Repair Permissions", "Rebuild Thumbnails" and "Rebuild Database" from the iPhoto First Aid menu (Opt-Cmd Click when opening iPhoto) and none of these have fixed the problem!  
    I just recently started using Aperture to view the same Library and I have no problem viewing the "Projects" (which is the same as Events in iPhoto) in the normal way.  I have a feeling that this problem started only when I first opened the iPhoto library in Aperture.
    Any ideas?

    You don't need to purchase iPLM to use it to rebuild the library.  But try this first:  apply the two fixes below in order as needed: 
    Fix #1
    Launch iPhoto with the Command+Option keys held down and rebuild the library.
    Since only one option can be run at a time start with Option #3, followed by #4 and then #1 as needed.
    Fix #2
    Using iPhoto Library Manager  to Rebuild Your iPhoto Library
    1 - download iPhoto Library Manager and launch.
    2 - click on the Add Library button, navigate to your Home/Pictures folder and select your iPhoto Library folder.
    3 - Now that the library is listed in the left hand pane of iPLM, click on your library and go to the File ➙ Rebuild Library menu option.
    4 - In the next  window name the new library and select the location you want it to be placed.
    5 - Click on the Create button.
    Note: This creates a new library based on the LIbraryData.xml file in the library and will recover Events, Albums, keywords, titles and comments.  However, books, calendars, cards and slideshows will be lost. The original library will be left untouched for further attempts at fixing the problem or in case the rebuilt library is not satisfactory.
    OT

  • Projects and events are empty!

    Before I call support, maybe someone can help. I created a project and finished it, all locally (no external drives involved). The next morning, when I opened FCPX, the event and project NAMES were there, but clicking on them yielded NOTHING. There was no evidence of any of my imported media, either, although my hard drive still showed 10GB less space, so it was still on there somewhere. After uninstalling and reinstalling FCPX and mounting some random libraries from the "Final Cut Backups" folder, the projects and timelines reappeared, but ALL the clips were missing, and attempts to relink them led nowhere. So I RE-IMPORTED all the footage in a new library/event, and when I dragged the event into the library where the "blank" project lived, all the clips mysteriously re-populated and all was right again. This morning, opened up FCPX and the SAME THING happened. Only this time, I can't get any project/timeline to load from ANY library (including every single "backup" library). So I'm panicking that even if I re-import all the footage for a third time, I won't have a project for the clips to "find" and I'll have to start over. WHAT IS GOING ON??? 
    Thanks!
    Bill

    UPDATE: The event has returned but it is still empty. I opened the Console and the following error is repeated hundreds of times starting at the time of the original crash:
    1/5/14 11:49:54.234 AM iMovie[34085]: CoreData: error: (3850) I/O error for database at /Volumes/Media 2/iMovie/iMovie Library.imovielibrary/Mid Winter Bluegrass Show/CurrentVersion.imovieevent.  SQLite error code:3850, 'not an error' errno:9

  • How to catch the mouse event from the JTable cell of  the DefaultCellEditor

    Hi, my problem is:
    I have a JTable with the cells of DefaultCellEditor(JComboBox) and added the mouse listener to JTable. I can catch the mouse event from any editor cell when this cell didn't be focused. However, when I click the editor to select one JComboBox element, all the mouse events were intercepted by the editor.
    So, how can I catch the mouse event in this case? In other word, even if I do the operation over the editor, I also need to catch the cursor position.
    Any idea will be highly appreciated!
    Thanks in advance!

    Hi, bbritta,
    Thanks very much for your help. Really, your code could run well, but my case is to catch the JComboBox event. So, when I change the JTextField as JComboBox, it still fail to catch the event. The following is my code. Could you give me any other suggestion?
    Also, any one has a good idea for my problem? I look forward to the right solution to this problem.
    Thanks.
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Test3
    extends JFrame {
    // JTextField jtf = new JTextField();
    Object[] as = {"aa","bb","cc","dd"};
    JComboBox box = new JComboBox(as);
    public Test3() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container content = getContentPane();
    String[] head = {
    "One", "Two", "Three"};
    String[][] data = {
    "R1-C1", "R1-C2", "R1-C3"}
    "R2-C1", "R2-C2", "R2-C3"}
    JTable jt = new JTable(data, head);
    box.addMouseListener(new MouseAdapter() {
    // jtf.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e)
    System.out.println("-------------------JComboBox mouseclick....");
    jt.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e)
    System.out.println("-------------------JTable mouseclick....");
    // jt.setDefaultEditor(Object.class, new DefaultCellEditor(jtf));
    jt.setDefaultEditor(Object.class, new DefaultCellEditor(box));
    content.add(new JScrollPane(jt), BorderLayout.CENTER);
    setSize(300, 300);
    public static void main(String[] args) {
    new Test3().setVisible(true);
    }

  • JChecjBox and JTextField Event Handling in JTable

    Hi,
    I am creating a dynamic Jtable from data in Database. My table has x num of rows and 5 cols. I have 2 editable columns in Table. one is of type checkbox and other is textfield. I have also created a CustomTableModel which extends DefaultTableModel. My Question is How to trap an even on JCheckBox and JTextField when User changes the data in the table. I want trap the event, read the new data and save it to the database.
    Please help me with this problem.
    I am fairly new at JTable..Please help me. Do i need to create customeCellEditor??
    Thank you.

    Thank you for your help. From TableChanged event I can find out that table has been updated. But how do i know which rows were updated? I mean How do i know which checkbox was checked/unchecked, or JTextfield text was changed? I need to read them one by one and compare with previous data. TO do that Do i need customCellEditor? Editable Checkbox is in first col of table and Editable Jtextfield is in 4th col. Number of rows vary depending on my resultset from DB.
    Please help me.
    Thank you in Advance.

  • IPhoto events are empty now

    I just bought a new iMac and imported about 5,000 pictures into iPhoto. They were there fine but now they are no longer showing. The events are all still showing but are empty now. What could have happened and is there anyway to find my pictures? Some albums are still showing with pictures in them from an earlier import but not the ones from my most recent import.

    You need to start a new thread as your problem is nothing the same as the thread you threadjacked
    It also is not helpful to threadjack multiple threads - simpy start a new thread, supply the information needed to help you (what you have (version), what is happening and what recently changed)
    LN

  • Process Task Child Table Delete Event passes empty values

    Hi All,
    I'm trying to implement a delete event in a process task for a child table. I am assuming the value to be deleted
    should be getting passing into the adapter but it's passing empty strings instead. The insert event is working fine however.
    Any one else using the delete event that works?
    Thanx
    Fred

    Hi Kevin.
    Any idea how to programmatically access the "old value" variant of a form field?
    It's the sort of thing one needs occasionally when a value changes and some associated capability needs to be updated. The old value specifies what needs to be removed while the new value tells the system what is to be added in its place.
    (It so happens in our environment that we have dozens of these values per user profile, so it would be very painful to store "old" values in a parallel set of fields.)
    Thanks,
    Dan

  • Events in empty sub-panels

    I have a user interface concept that I'm investigating.  The end application is to monitor the status of some parameters in equipment racks.  Since there is limited space on the screen and since there are so many racks, I thought it might work for the client to be able to click on an empty sub-panel in an array of sub-panels on the user interface and be prompted for the name of the rack that should have its information displayed there.  When the selection is made, the miniature front panel for that VI would be placed in the sub-panel.  My experiment, however, shows that there does not appear to be any events on sub-panels.  Is there any way to do this other than by using the coordinates of the mouse click in the Pane event?
    Solved!
    Go to Solution.

    These are both interesting options.  The problem with using dynamic event registration is that it requires a priori knowledge of the number of sub-panels that will be used.  This is not a problem by my original statement but I have plans to script this process later on so I will now focus my attention on how to script a new sub-panel and insert a VI into it.
    Having used JavaScript in a browser environment, there is a method called event bubbling that allows the object to handle any event enacted upon it.  If that event handler is absent, the event "bubbles" up to the next level in the DOM tree and continues to do so until a handler is found to process the event.  This is the sort of thing I was looking for in LV.
    Thanks to both of you for your comments and suggestions.

  • Events missing in JTable

    In my application one of the table columns is boolean.Table is displaying checkboxex for that column.That is good.when i click check box i want to take table's other column value which is integer ,sum it to other vale and display that value in jlabel. This functionality is working great as long as i click checkboxe slowly.
    But problem is when i click checkboxex very fast events getting missed and label value is not updating.I tried to synchronize code but it doesn't work.
    help is greatly appreciated
    thanks in advance

    thanks for your reply.
    i tried to create runnable in setvalueat method of my table model.iam new to threads.i might be doing something wrong.
    here iam attaching same class that iam experimenting.
    any help really appreciated.
    i have deadline by friday
    import javax.swing.JTable;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.JScrollPane;
    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;
    import javax.swing.JOptionPane;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import java.awt.geom.*;
    import java.awt.Dimension;
    import java.text.*;
    import javax.swing.event.TableModelListener;
    import javax.swing.event.TableModelEvent;
    import javax.swing.table.*;
    public class TableSorterDemo extends JFrame {
    private boolean DEBUG = true;
    JTable table;
    JLabel label=new JLabel();
    public TableSorterDemo() {
    super("TableSorterDemo");
    MyTableModel myModel = new MyTableModel();
    //TableSorter sorter = new TableSorter(myModel); //ADDED THIS
    //JTable table = new JTable(myModel); //OLD
    //JTable table = new JTable(sorter); //NEW
    //table = new JTable(sorter);
    table = new JTable();
    table.setModel(myModel);
    myModel.addTableModelListener(myModel);
    //sorter.addMouseListenerToHeaderInTable(table); //ADDED THIS
    table.setPreferredScrollableViewportSize(new Dimension(500, 70));
    table.setSelectionMode(0);
    //Create the scroll pane and add the table to it.
    JScrollPane scrollPane = new JScrollPane(table);
    //JLabel label=new JLabel();
    label.setText("0");
    //Add the scroll pane to this window.
    getContentPane().add(scrollPane, BorderLayout.CENTER);
    getContentPane().add(label, BorderLayout.SOUTH);
    addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    public void run(){
    class MyTableModel extends AbstractTableModel implements TableModelListener {
    final String[] columnNames = {"First Name",
    "Last Name",
    "Sport",
    "# of Years",
    "Vegetarian"};
    final Object[][] data = {
    {"Mary", "Campione",
    "Snowboarding", "10", new Boolean(false)},
    {"Alison", "Huml",
    "Rowing", "20", new Boolean(false)},
    {"Kathy", "Walrath",
    "Chasing toddlers", "50", new Boolean(false)},
    {"Mark", "Andrews",
    "Speed reading", "60", new Boolean(false)},
    {"Angela", "Lih",
    "Teaching high school", "10", new Boolean(false)}
    public int getColumnCount() {
    return columnNames.length;
    public int getRowCount() {
    return data.length;
    public String getColumnName(int col) {
    return columnNames[col];
    public Object getValueAt(int row, int col) {
    return data[row][col];
    * JTable uses this method to determine the default renderer/
    * editor for each cell. If we didn't implement this method,
    * then the last column would contain text ("true"/"false"),
    * rather than a check box.
    public Class getColumnClass(int c) {
    return getValueAt(0, c).getClass();
    * Don't need to implement this method unless your table's
    * editable.
    public boolean isCellEditable(int row, int col) {
    //Note that the data/cell address is constant,
    //no matter where the cell appears onscreen.
    if (col < 2) {
    return false;
    } else {
    return true;
    public void tableChanged(TableModelEvent e){
    //final TableModelEvent e1=e;
    //Runnable setSearchStatusLabel = new Runnable() {
    //public void run() {
    //AddSum(e.getFirstRow(),e.getColumn(),(table.getValueAt(e.getFirstRow(),e.getColumn())).toString());
    //SwingUtilities.invokeLater(setSearchStatusLabel);
    //System.out.println(e.getFirstRow());
    //System.out.println(e.getColumn());
    //System.out.println(table.getValueAt(e.getFirstRow(),e.getColumn()));
    * Don't need to implement this method unless your table's
    * data can change.
    public synchronized void setValueAt(Object value, int row, int col) {
    /*if (DEBUG) {
    System.out.println("Setting value at " + row + "," + col
    + " to " + value
    + " (an instance of "
    + value.getClass() + ")");
    final int row1=row;
    final int col=col1;
    final String value1=value;
    Runnable setSearchStatusLabel = new Runnable() {
    public void run() {
    AddSum(row1,col1,value1);
    /*int labelval=StringToInt(label.getText());
    int newlabelval;
    int tablesumval;
    if(value1.equalsIgnoreCase("true")){
    tablesumval=StringToInt((String)(table.getValueAt(row1,col1-1)));
    //tablesumval=Integer.parseInt((String)(getScrollPaneTableLocHitRecords().getValueAt(selectedRow,13)));
    newlabelval=labelval+tablesumval;
    //String test=IntToCurrencyString(newlabelval);
    label.setText(IntToString(newlabelval));
    else{
    tablesumval=StringToInt((String)(table.getValueAt(row1,col1-1)));
    if(labelval==0){
    newlabelval=tablesumval;
    else{
    newlabelval=labelval-tablesumval;
    label.setText(IntToString(newlabelval));
    //SwingUtilities.invokeLater(setSearchStatusLabel);
    if (data[0][col] instanceof Integer
    && !(value instanceof Integer)) {
    //With JFC/Swing 1.1 and JDK 1.2, we need to create
    //an Integer from the value; otherwise, the column
    //switches to contain Strings. Starting with v 1.3,
    //the table automatically converts value to an Integer,
    //so you only need the code in the 'else' part of this
    //'if' block.
    try {
    data[row][col] = new Integer(value.toString());
    fireTableCellUpdated(row, col);
    } catch (NumberFormatException e) {
    JOptionPane.showMessageDialog(TableSorterDemo.this,
    "The \"" + getColumnName(col)
    + "\" column accepts only integer values.");
    } else {
    data[row][col] = value;
    fireTableCellUpdated(row, col);
    if (DEBUG) {
    System.out.println("New value of data:");
    printDebugData();
    private void printDebugData() {
    int numRows = getRowCount();
    int numCols = getColumnCount();
    for (int i=0; i < numRows; i++) {
    System.out.print(" row " + i + ":");
    for (int j=0; j < numCols; j++) {
    System.out.print(" " + data[i][j]);
    System.out.println();
    System.out.println("--------------------------");
    public static void main(String[] args) {
    TableSorterDemo frame = new TableSorterDemo();
    frame.pack();
    frame.setBounds(100,100,500,150);
    frame.setVisible(true);
    private String IntToString(int val) {
         NumberFormat formatter = NumberFormat.getInstance();
         formatter.setMaximumFractionDigits(0);
         String result=formatter.format(val);
         return result;
    private int StringToInt(String val) {
         NumberFormat formatter = NumberFormat.getInstance();
         formatter.setMaximumFractionDigits(0);
         //formatter.setGroupingUsed(false);
         Number numberValue=null;
         try{
              numberValue = formatter.parse(val);
         catch(ParseException e){};
         //return 3;
         return numberValue.intValue();
    //private synchronized void AddSum( int row1,int col1,String value1){
    private synchronized void AddSum(int row1,int col1,String value1){
    int labelval=StringToInt(label.getText());
    int newlabelval;
    int tablesumval;
    if(value1.equalsIgnoreCase("true")){
    tablesumval=StringToInt((String)(table.getValueAt(row1,col1-1)));
    //tablesumval=Integer.parseInt((String)(getScrollPaneTableLocHitRecords().getValueAt(selectedRow,13)));
    newlabelval=labelval+tablesumval;
    //String test=IntToCurrencyString(newlabelval);
    label.setText(IntToString(newlabelval));
    else{
    tablesumval=StringToInt((String)(table.getValueAt(row1,col1-1)));
    if(labelval==0){
    newlabelval=tablesumval;
    else{
    newlabelval=labelval-tablesumval;
    label.setText(IntToString(newlabelval));

  • Listening for change events on a JTable

    Hi
    me = Java newbie!
    Well I've been building an app to read EXIF data from JPEG files using the imageio API and Swing. Learning both along the way.
    Stumbling block is that I am outputting the EXIF data into a JTable, inside a JScrollPane. These 2 components then become associated with a JInternalFrame container of the class MyInternalFrame.
    Works!
    Next job is to enable user to select a row in the table which then displays the image file.
    I know I can use ListSelectionEvent to detect a row selection and that 2 events are fired.
    I put some code into MyInternalFrame class to register a ListSelectionEvent, but I can't see how to reference MyInternalFrame from within this code....see below:
    package EXIFReader;
    import java.io.File;
    import java.io.FilenameFilter;
    import javax.swing.JInternalFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.ListSelectionModel;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    //This class constructs a table and displays it in a JInternalFrame
    public class MyInternalFrame extends JInternalFrame {
    static int openFrameCount = 0;
    static final int xOffset = 30, yOffset = 30;
    File file;
    File[] directoryMembers = null;
    public MyInternalFrame(File aFile) { //aFile rererences a directory containing jpeg files//
    super(null,
    true, //resizable
    true, //closable
    true, //maximizable
    true);//iconifiable
    file = aFile;
    //Set the window's location.
    this.setLocation(xOffset*openFrameCount, yOffset*openFrameCount);
    FilenameFilter filter = new FilenameFilter() {
    public boolean accept(File dir, String name) {
    return name.endsWith(".jpg");}};//Filter out any files in the directory that ain't jpegs
    directoryMembers = file.listFiles(filter);
    int i = 0;
    String[][] tableData= new String [directoryMembers.length][5];
    String[]headers = new String[]{"File Name","Date Taken",
    "F-Number","Exposure",
    "Flash Settings"};
    for (File dirfile: directoryMembers)
    try {
    if(dirfile!=null){
    tableData[i] = new ExifReader(dirfile).getEXIFData();//populate the table with jpeg file names
    i++;}}
    catch (Exception ex) {
    System.out.print("Error" + ex);
    if (tableData[0] != null){
    final JTable myTable = new JTable(tableData,headers);
    this.setSize(900,(50+(directoryMembers.length)*19));
    myTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    this.getContentPane().add(new JScrollPane(myTable),"Center");//add the JTable and JScrollPanel to this MyInternal Frame and display it! - cool it works!
    ListSelectionModel myLSM = myTable.getSelectionModel();
    myLSM.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent le) {
    int[] rows = myTable.getSelectedRows();//want to respond to selections and then display the image as a JInternalFrame but got confused about references from within this listener - need help!
    Any gentle nudges?!
    P
    I can respond to these events using a JFrame, but how can I display the image in a JInternalFrame?

    Use code tags to post codes -- [code]CODE[/code] will display asCODEOr click the CODE button and paste your code between the {code} tags that appear.
    To get better help sooner, post a [_SSCCE_|http://mindprod.com/jgloss/sscce.html] that clearly demonstrates your problem.
    db

  • After downloading photos all new events went empty

    I loaded all my photos from my WD backup (PC) on to my new MacBookPro (IPhoto). All went well, and after labeling names on faces I lost all pic in each event loaded. Events have names and dates of pic, but are all empty.
    Can someone help me??
    Thanks

    backup your iPhoto library, depress teh option and command keys, launch iPhoto and use the resulting first aid window to repair repair permissions, if needed repair the  the database - if that does not do it rebuild the database
    LN

  • IPhoto shows events as empty but photos are inside

    When I opened iPhoto today a few events I recently worked on had changed. They're shown as empty (0 photos) with a place holder graphic. It does show me when the photos were taken though and when I open the event all the photos are there.
    Also, the first event in this series shows up as containing a large number of photos (350) but when I open it, it only contains the photos which should be in it.
    Re-starting iPhoto doesn't help. Also opening and closing the event and re-assigning a key photo doesn't change anything.
    Any help would be appreciated.

    Did not work for me.  Still showing:
    Any other ideas?
    Thank you

  • IMPRT "events" are empty after sync

    when I synced my iPad 3rd generation with my iMac recently - the first time since purchasing the iPad 3rdG - a SECOND mystery annoyance cropped up (see below for link to the 1st ongoing annoyance).
    Syncing my Photos, I select "Selected" events to sync.
    Those events are just dandy.
    However, many of the "events" named ###IMPRT show on the iPad in the Events area, but they're completely empty.
    I can't delete them from the iPad.
    HOW do I clean things up? This is aggravating.

    I've resynced my iPad with my computer, hoping that maybe these phantom, empty IMPRT "events" would disappear in the process, but no.
    When I open Photos on my iPad and go to Events, among the IMPRT events folders, are dozens of empty folders, each labeled with a number  followed by IMPRT or with a date.
    I can't delete them.
    I don't even care any more about WHY this is happening (I gave up trying to understand iCloud and Apple) I just want to know  WHAT CAN I DO? I would like to clean things up...the fact that Apple allows users so little control over things like this drives me crazy.
    Please help.

Maybe you are looking for