This is how I would write it:

(doseq [[main fixed] (map vector mainTables fixedTables)]
  (println "Setting up table")
  (doto fixed
    (.setAutoCreateColumnsFromModel false)
    (.setModel (.getModel main))
    (.setSelectionModel (.getSelectionModel main))
    (.setFocusable false))
  (let [column (.getColumn (.getColumnModel main) 0)]
    (println column)
    (.removeColumn (.getColumnModel main) column)
    (.addColumn (.getColumnModel fixed) column)))
(println mainTables)
(println fixedTables)

On Fri, Apr 9, 2010 at 10:39 AM, Josh Stratton <strattonbra...@gmail.com>wrote:

> Here's an example of trying to use "map" to bring the two tables
> together together in the same scope.  I'm doing this because the nth
> element in one sequence correlates to its nth counterpart in the
> second sequence.  mainTables is a sequence of JTables and fixedTables
> is an equally sized sequence of JTables.  For some reason though it
> appears that setupTable is never being called.  Why is that?  Is there
> a better way to do this?
>
>            (defn setupTable [main fixed]
>              (println "Setting up table")
>              (doto fixed
>                    (.setAutoCreateColumnsFromModel false)
>                    (.setModel (.getModel main))
>                    (.setSelectionModel (.getSelectionModel main))
>                    (.setFocusable false))
>
>              ; remove the first column from the main table and add it to
> the
> fixed table
>              (let [column (.getColumn (.getColumnModel main) 0)]
>                   (println column)
>                   (.removeColumn (.getColumnModel main) column)
>                   (.addColumn (.getColumnModel fixed) column)
>                   )
>              )
>
>            (map (fn [main fixed] (setupTable main fixed)) mainTables
> fixedTables)
>            (println mainTables)
>            (println fixedTables)
>
> On Thu, Apr 8, 2010 at 4:30 PM, Josh Stratton <strattonbra...@gmail.com>
> wrote:
> >> It sounds like the doseq is the macro you're looking for, e.g.
> >> (doseq [c my-components]
> >>   (.setVisible c true))
> >
> > That works once I've done the initial mapping and I want to set
> > values, but what if I still want the two components--the old and new
> > one--in the same scope at the same time?
> >
> > In python, one might do something like this:
> >
> > for i,component in oldComponents:
> >     newComponents[i].setValue(oldComponents[i])
> >     if (oldComponents[i].getAttribute() > 5):
> >          newComponents[i].setAttribute(0)
> >     else:
> >          newComponents[i].setAttribute(1)
> >
> > I guess I was just trying to avoid using index notation.  Would zip be
> > the appropriate solution here, where I can set the two lists together
> > in tuples of old and new?
> >
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to