Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java programming articles and tips. Please take your copy here.

Take your copy of free "Java Technology Screensaver"!.

Easy Learn Java: Programming Articles, Examples and Tips - Page 282


Previous 1060 Stories (530 Pages, 2 Per Page) Next

Swing Dev with TableModel Free framework

Go to all tips in Swing, AWT

Free yourself from the burden of the TableModel

The "reintroduction of the Java™ Desktop" underscored this year's JavaOne conference. A renewed effort on Swing and GUI development doesn't come as welcome news to those of you who swore off Swing as too slow, too hard to use, or too ugly. Well, if you haven't worked with Swing lately, you'll be glad to hear that many of these problems have disappeared. Swing has been reworked to perform better and to take better advantage of the Java 2D API. The Swing developers have improved the look and feel support in 1.4 and even more so in the recently released 5.0. Swing is back and better than ever before.

What the Swing community needs right now are tools to make GUI development a smoother, easier process. And that's where this article comes in.

This article introduces the TableModel Free (TMF) framework, a GUI development package that relieves the need to create TableModels (which I'll call classic TableModels in this article to distinguish them from the new structures I introduce for the framework) for every JTable; in the process, you'll be able to make your JTables much more configurable and maintainable.

If you've ever used a JTable, you've also been forced to use a TableModel. You've probably also noticed that nearly all of the code in each TableModel is identical to the code in every other TableModel, and the code that is different doesn't really belong in a compiled Java class anyway. This article will dissect the current methods of TableModel/JTable design, illustrate the shortcomings of this design, and show how it hasn't accomplished the true goals of the Model-View-Controller (MVC) pattern. You will see the framework and code that makes up the TMF framework -- a combination of code that I've written and commonly used open source projects. With this framework, developers can reduce the size of a TableModel from hundreds of lines of code to a single line, and put the important table information in an external XML file. After reading this article, you will be able to manage your JTable's data using the single line of code shown here:

  
  TableUtilities.setViewToModel("tableconfig.xml", "My Table", 
    myJTable, CollectionUtilities.observableList(myData));
  

MVC problems with JTable and TableModel
MVC has become a very popular UI design pattern, as it cleanly separates out the business logic from the view of the data. Struts is a very good example of the MVC design in use on the Web. One of the big initial selling points of Swing was its use of the MVC -- separating the view from the model -- the idea being that the code was modular enough that you could swap out the view without changing any code in the model. I think anyone who has ever worked with JTables and TableModels will laugh and tell you that that's flat-out impossible. Ideally, using the MVC design pattern, a developer should be able to substitute a JList or a JComboBox for a JTable with no change to the code in the model representing the data. However, you can't do that in Swing. Swing makes it impossible to hot swap a JTable, JList, and JComboBox into an application, even if all three components were to provide views of the same data model. That's a big deficiency in the MVC design with Swing. If you want to swap a JList for a JTable, you must rewrite the entire model behind the view to accommodate it.

Another MVC deficiency specific to JTable/TableModel is the fact that the view does not update itself when the model changes. A developer must keep a reference of the model and call a function so that the model tells the view to update itself; ideally, however this should just happen without any additional code.

Ultimately, the problem with the design of the JTable and TableModel components is that they are too intertwined with one another. If you change code in the JTable, you need to make sure that you haven't broken your TableModel in the process, and vice versa. In what is supposed to be a design pattern built on modularity, the current implementation is more a design of dependencies.

The TMF framework better adheres to the MVC goals by more cleanly separating the tasks of the view and the model in a JTable. Though it doesn't reach the higher goal of making the components hot swappable, it is a step in the right direction.

Full text here



1 comment | Printer Friendly Page  Send to a Friend | Score: 0
Posted by Anonymous on Tuesday, December 21, 2004 (00:00:00) (4546 reads)

Java flaw could lead to Windows, Linux attacks

Go to all tips in Security

Java flaw could lead to Windows, Linux attacks

A flaw in Sun Microsystems' plug-in for running Java on a variety of browsers and operating systems could allow a virus to spread through Microsoft Windows and Linux PCs.

The vulnerability, found by Finnish security researcher Jouko Pynnonen in April, was patched last month by Sun, but its details were not made public until Tuesday. Security information provider Secunia posted information about the flaw in an advisory that rated it a "highly critical" threat.

The Java plug-in enables small Web programs, known as applets, to run safely on a user's computer. But the security flaw allows a malicious Web site accessed through a victim's browser to bypass those protections.

"It allows execution of attacker-supplied code without user interaction (apart from viewing a Web page) which usually means a 'critical' classification," Pynonnen stated in an e-mail interview with CNET News.com.

"The same exploit could also be used against various operating systems and browsers, which makes it more serious," he added. The vulnerability can be used to attack systems running on Windows or Linux, for example, and using major browser software such as Microsoft's Internet Explorer and Firefox--meaning a large number of systems are vulnerable to attack.

An attacker could use the flaw to do anything the victim normally could, including browse, modify or run files, upload more programs to the victim's system, or send out data from the system, Pynnonen wrote in an advisory dated Tuesday.

While the major browsers have had to deal with a significant number of security issues, the flaw is a rare black eye for the security of Sun's Java technology. Java is designed to be able to run programs downloaded from the Internet on various operating systems safely, without danger to a PC. The "sandbox" that cordons off Java applets from the rest of the system has typically worked well.

However, the flaw allows small snippets of Web code, known as Javascript, to execute functions of Java that were never meant to be run by external programs.

Last week, while announcing details of Sun's forthcoming Solaris 10 operating system, President Jonathan Schwartz noted that Java hasn't been afflicted by a single Java virus.

However, the new security hole could allow a virus to use the Java plug-in to invade PC systems. In October, a flaw in the Java plug-in for cell phones raised the specter that a malicious program disguised as a helpful application could attack a phone's software, if run by a user.

Full text here



8 comments | Printer Friendly Page  Send to a Friend | Score: 5
Posted by jalex on Monday, December 20, 2004 (00:00:00) (3125 reads)

Previous 1060 Stories (530 Pages, 2 Per Page) Next

530| 529| 528| 527| 526| 525| 524| 523| 522| 521| 520| 519| 518| 517| 516| 515| 514| 513| 512| 511| 510| 509| 508| 507| 506| 505| 504| 503| 502| 501| 500| 499| 498| 497| 496| 495| 494| 493| 492| 491| 490| 489| 488| 487| 486| 485| 484| 483| 482| 481| 480| 479| 478| 477| 476| 475| 474| 473| 472| 471| 470| 469| 468| 467| 466| 465| 464| 463| 462| 461| 460| 459| 458| 457| 456| 455| 454| 453| 452| 451| 450| 449| 448| 447| 446| 445| 444| 443| 442| 441| 440| 439| 438| 437| 436| 435| 434| 433| 432| 431| 430| 429| 428| 427| 426| 425| 424| 423| 422| 421| 420| 419| 418| 417| 416| 415| 414| 413| 412| 411| 410| 409| 408| 407| 406| 405| 404| 403| 402| 401| 400| 399| 398| 397| 396| 395| 394| 393| 392| 391| 390| 389| 388| 387| 386| 385| 384| 383| 382| 381| 380| 379| 378| 377| 376| 375| 374| 373| 372| 371| 370| 369| 368| 367| 366| 365| 364| 363| 362| 361| 360| 359| 358| 357| 356| 355| 354| 353| 352| 351| 350| 349| 348| 347| 346| 345| 344| 343| 342| 341| 340| 339| 338| 337| 336| 335| 334| 333| 332| 331| 330| 329| 328| 327| 326| 325| 324| 323| 322| 321| 320| 319| 318| 317| 316| 315| 314| 313| 312| 311| 310| 309| 308| 307| 306| 305| 304| 303| 302| 301| 300| 299| 298| 297| 296| 295| 294| 293| 292| 291| 290| 289| 288| 287| 286| 285| 284| 283|
282
| 281| 280| 279| 278| 277| 276| 275| 274| 273| 272| 271| 270| 269| 268| 267| 266| 265| 264| 263| 262| 261| 260| 259| 258| 257| 256| 255| 254| 253| 252| 251| 250| 249| 248| 247| 246| 245| 244| 243| 242| 241| 240| 239| 238| 237| 236| 235| 234| 233| 232| 231| 230| 229| 228| 227| 226| 225| 224| 223| 222| 221| 220| 219| 218| 217| 216| 215| 214| 213| 212| 211| 210| 209| 208| 207| 206| 205| 204| 203| 202| 201| 200| 199| 198| 197| 196| 195| 194| 193| 192| 191| 190| 189| 188| 187| 186| 185| 184| 183| 182| 181| 180| 179| 178| 177| 176| 175| 174| 173| 172| 171| 170| 169| 168| 167| 166| 165| 164| 163| 162| 161| 160| 159| 158| 157| 156| 155| 154| 153| 152| 151| 150| 149| 148| 147| 146| 145| 144| 143| 142| 141| 140| 139| 138| 137| 136| 135| 134| 133| 132| 131| 130| 129| 128| 127| 126| 125| 124| 123| 122| 121| 120| 119| 118| 117| 116| 115| 114| 113| 112| 111| 110| 109| 108| 107| 106| 105| 104| 103| 102| 101| 100| 99| 98| 97| 96| 95| 94| 93| 92| 91| 90| 89| 88| 87| 86| 85| 84| 83| 82| 81| 80| 79| 78| 77| 76| 75| 74| 73| 72| 71| 70| 69| 68| 67| 66| 65| 64| 63| 62| 61| 60| 59| 58| 57| 56| 55| 54| 53| 52| 51| 50| 49| 48| 47| 46| 45| 44| 43| 42| 41| 40| 39| 38| 37| 36| 35| 34| 33| 32| 31| 30| 29| 28| 27| 26| 25| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1|


Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy