Guiexample.java
Allikas: Lambda
// A simple window containing a working button, plus some text fields // doing some drawing when you push the button // NB! We have several layers in visual app here, each containing the lower ones: // - frame (JFrame, ie a window) // - toppanel (ordinary JPanel) with BorderLayout // - buttonpanel (ordinary Jpanel), at NORTH // - drawpanel (our DrawPanel, which is a variation of JPanel class), at CENTER import javax.swing.*; import java.awt.*; import java.awt.event.*; public class guiexample { // creates a small window with a text and a button in it public static void main(String[] args) { // create new frame JFrame frame = new guiexampleFrame(); // Set a window look-and-feel try { UIManager.setLookAndFeel // ("javax.swing.plaf.metal.MetalLookAndFeel"); // ("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); ("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); SwingUtilities.updateComponentTreeUI(frame); frame.pack(); } catch (Exception exc) { System.err.println("Could not load given LookAndFeel!"); } // react to window close, pack stuff, show out frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400,400); frame.setLocation(200,200); //frame.pack(); // give a suitable size to window automatically frame.setVisible(true); // make window visible //panel.updateState(); // refresh panel } } class guiexampleFrame extends JFrame { guiexampleFrame frame; JPanel toppanel; JPanel buttonpanel; examplecanvas drawpanel; JPanel buttonpanel2; JTextField textfield1, textfield2; guiexampleFrame() { // create a new window and panels toppanel = new JPanel(); buttonpanel = new JPanel(); buttonpanel2 = new JPanel(); // Create and add two text fields to button panel //JTextField textfield1 = new JTextField(10); //JTextField textfield2 = new JTextField(10); drawpanel = new examplecanvas (textfield1,textfield2); // set layouts and colors of panels buttonpanel.setLayout(new FlowLayout()); buttonpanel.setBackground(Color.blue); toppanel.setLayout(new BorderLayout()); toppanel.setBackground(Color.green); buttonpanel2.setLayout(new GridLayout(2,1)); // create and add components // create a label widget with text, put on button panel JLabel label = new JLabel("Hi!"); buttonpanel.add(label); buttonpanel.add(textfield1); buttonpanel.add(textfield2); // Create and add a button to button panel JButton button = new JButton("Press me, please!"); buttonpanel.add(button); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { drawpanel.repaint(); } }); JButton button2 = new JButton("Ohoo"); JButton button3 = new JButton("Ehee"); buttonpanel2.add(button2); buttonpanel2.add(button3); // add button and drawpanels to toppanel toppanel.add(BorderLayout.NORTH,buttonpanel); toppanel.add(BorderLayout.WEST,buttonpanel2); toppanel.add(BorderLayout.CENTER,drawpanel); // add toppanel to the window this.getContentPane().add(toppanel); } } class examplecanvas extends Canvas { Color textColor; // Color in which "Hello // World" is displayed. Font textFont; // The font in which the // message is displayed. JTextField textfield1,textfield2; examplecanvas(JTextField t1, JTextField t2) { // Constructor. textfield1=t1; textfield2=t2; setBackground(Color.green); //textColor = Color.red; //textFont = new // Font("Serif",Font.BOLD,24); } public void paint(Graphics g) { g.drawString("haa",100,200); Font timesFont = new Font("Serif", Font.PLAIN, 16); g.setFont(timesFont); g.setColor( Color.blue); g.drawString(textfield1.getText(), 50,250); g.drawString(textfield2.getText(), 100,300); //g.drawString("suva", 50,250); g.drawLine(0,0,300,300); g.drawRect(40,60,90,110); for (int i=0; i<100; i++) { g.drawLine(20,30,70,70+i); } } void setTextColor(Color color) { // Set the text color and tell the system // to repaint the canvas. textColor = color; repaint(); } } // end class