Posts Tagged ‘ pydev

Compare Jython and Java swing authoring

Since I’m teaching myself Java, and recently installed Jython, I thought it would be interesting to compare the two for authoring swing UI’s.  To aid in this development, I got the PyDev plugin for Eclipse installed, allowing for me to use Eclipse as an IDE for Jython and Python, nice.  FYI, I am by no means an expert at swing, or Java.  But the examples do work :)

Both examples display identical “Hello World!” window.

Here’s the Jython:

# texttest.py
from javax.swing import *
from java.awt import *

class TextTest(JFrame):
    def __init__(self):
        JFrame.__init__(self, "TextTest")
        self.setSize(256, 128)
        self.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
        pane = HelloPane()
        self.add(pane)
        self.setVisible(True)

class HelloPane(JPanel):
    def paintComponent(self, comp):
        f = Font("Arial", Font.PLAIN, 32)
        comp.setFont(f)
        comp.drawString("Hello World!", 32, 64)

if __name__ == "__main__":
    tt = TextTest()

And here’s the Java:

// TextTest.java
import javax.swing.*;
import java.awt.*;

public class TextTest extends JFrame {
    public TextTest() {
        super("TextTest");
        setSize(256, 128);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        HelloPane pane = new HelloPane();
        add(pane);
        setVisible(true);
    }

    public static void main(String[] arguments) {
        TextTest frame = new TextTest();
    }
}

class HelloPane extends JPanel {
    public void paintComponent(Graphics comp) {
        Graphics2D comp2D = (Graphics2D)comp;
        Font f = new Font("Arial", Font.PLAIN, 32);
        comp2D.setFont(f);
        comp2D.drawString("Hello World!", 32, 64);
    }
}