| // Example for use of GNU gettext. |
| // This file is in the public domain. |
| // |
| // Source code of the Java/Swing program. |
| |
| import java.util.*; |
| import java.io.*; |
| import java.text.*; |
| import java.awt.*; |
| import java.awt.event.*; |
| import javax.swing.*; |
| import gnu.gettext.*; |
| |
| public class Hello { |
| public static void main (String[] args) { |
| ResourceBundle catalog = ResourceBundle.getBundle("hello-java-swing"); |
| JFrame frame = new JFrame("Hello example"); |
| frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); |
| JLabel label1 = |
| new JLabel(GettextResource.gettext(catalog,"Hello, world!")); |
| JLabel label2 = |
| new JLabel( |
| MessageFormat.format( |
| GettextResource.gettext(catalog, |
| "This program is running as process number {0}."), |
| new Object[] { getPid() })); |
| JButton button = new JButton("OK"); |
| button.addActionListener( |
| new ActionListener() { |
| public void actionPerformed (ActionEvent event) { |
| System.exit(0); |
| } |
| }); |
| JPanel labels = new JPanel(); |
| labels.setLayout(new GridLayout(2, 1)); |
| labels.add(label1); |
| labels.add(label2); |
| JPanel buttons = new JPanel(); |
| buttons.setLayout(new FlowLayout(FlowLayout.RIGHT)); |
| buttons.add(button); |
| frame.getContentPane().setLayout(new BorderLayout()); |
| frame.getContentPane().add(labels, BorderLayout.CENTER); |
| frame.getContentPane().add(buttons, BorderLayout.SOUTH); |
| frame.pack(); |
| frame.setVisible(true); |
| } |
| |
| /* Return the process ID of the current process. */ |
| private static String getPid () { |
| try { |
| String[] args = new String[] { "/bin/sh", "-c", "echo $PPID" }; |
| Process p = Runtime.getRuntime().exec(args); |
| InputStream p_out = p.getInputStream(); |
| String s = (new BufferedReader(new InputStreamReader(p_out))).readLine(); |
| p.destroy(); |
| if (s != null) |
| return s; |
| } catch (IOException e) { |
| e.printStackTrace(); |
| } |
| return "???"; |
| } |
| } |