package loesninger; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.text.*; public class Datamodeller extends JFrame { private JTextField jTextField1 = new JTextField(); private JTextField jTextField2 = new JTextField(); private JTextField jTextField3 = new JTextField(); private JLabel jLabel2 = new JLabel(); private JLabel jLabel1 = new JLabel(); private JLabel jLabel3 = new JLabel(); private JButton jButton1 = new JButton(); private JButton jButton2 = new JButton(); private JMenuBar menulinje = new JMenuBar(); private JMenu itemMenu; private JMenuItem item1; private JButton jButton3 = new JButton(); private JLabel jLabel4 = new JLabel(); public Datamodeller() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } // jTextField1 og jTextField2 sættes til at redigere i samme tekst Document datamodel = jTextField1.getDocument(); jTextField2.setDocument(datamodel); // jTextField3 accepterer kun store bogstaver // Løsning med almindelig klasse // Document datamodel2 = new StortDokument(); // jTextField3.setDocument(datamodel2); // Løsning med anonym klasse jTextField3.setDocument(new PlainDocument() { public void insertString (int o, String s, AttributeSet a) throws BadLocationException { super.insertString(o, s.toUpperCase(), a); System.out.println("insertString("+o+", '"+s+"') kaldt.\n"); } }); // jButton1 og jButton2 deler datamodel jButton2.setModel(jButton1.getModel()); // trykkes der derfor på jButton1 vil jButton2 også generere en hændelse // menuindgangen deler datamodel med jButton3 item1.setModel(jButton3.getModel()); // vælges menuindgangen vil jButton3 også generere en hændelse } private void jbInit() throws Exception { this.getContentPane().setLayout(null); jLabel1.setText("Tekstfelt 1 & 2 deler model"); jLabel1.setBounds(new Rectangle(11, 13, 223, 17)); jTextField1.setText(""); jTextField1.setBounds(new Rectangle(14, 35, 101, 26)); jTextField2.setText(""); jTextField2.setBounds(new Rectangle(137, 36, 101, 24)); jLabel2.setText("Tekstfelt 3 accepterer kun store bogstaver"); jLabel2.setBounds(new Rectangle(13, 80, 321, 17)); jTextField3.setBounds(new Rectangle(13, 103, 107, 26)); jLabel3.setText("Knap 1 & 2 deler model"); jLabel3.setBounds(new Rectangle(13, 142, 256, 17)); jButton1.setText("jButton1"); jButton1.setBounds(new Rectangle(12, 165, 104, 27)); jButton2.setText("jButton2"); jButton2.setBounds(new Rectangle(129, 164, 97, 27)); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton2_actionPerformed(e); } }); jLabel4.setText("Knap 3 deler model med menuen"); jLabel4.setBounds(new Rectangle(15, 216, 256, 17)); jButton3.setText("jButton3"); jButton3.setBounds(new Rectangle(14, 241, 101, 28)); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton3_actionPerformed(e); } }); this.getContentPane().add(jLabel1, null); this.getContentPane().add(jLabel2, null); this.getContentPane().add(jLabel3, null); this.getContentPane().add(jLabel4, null); this.getContentPane().add(jTextField1, null); this.getContentPane().add(jTextField2, null); this.getContentPane().add(jTextField3, null); this.getContentPane().add(jButton1, null); this.getContentPane().add(jButton2, null); this.getContentPane().add(jButton3, null); // Opret menu itemMenu = new JMenu("Menu"); item1 = new JMenuItem(); item1.setText("Handling fælles med jButton3"); item1.setActionCommand("Item1"); itemMenu.add(item1); menulinje.add(itemMenu); setJMenuBar(menulinje); } void jButton2_actionPerformed(ActionEvent e) { System.out.println("jButton2 trykket ned."); } void jButton3_actionPerformed(ActionEvent e) { System.out.println("jButton3 trykket ned."); } public static void main(String[] arg) { Datamodeller vindue = new Datamodeller(); vindue.setSize(300,400); vindue.setVisible(true); } }