在Java举行的OnClick活动


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Prg_38 extends JFrame{
    JTextArea area = new JTextArea(5,10);                   // 5 rows and 10 colums
    JButton btn1 = new JButton("TextArea");             // name of JBUtton is TextArea
    JButton btn2 = new JButton("TextField");            // name of JButton is TextField
    JRadioButton bold,italic,plain,bold_italic;         // radio buttons
    JTextField fld = new JTextField(15);                // jtextfield is 15 characters long
    Font bf = new Font("Serif",Font.BOLD, 14);
    Font itf = new Font("Serif",Font.ITALIC, 14);
    Font itbf = new Font("Serif",Font.BOLD + Font.ITALIC, 14);
    GridBagConstraints gc = new GridBagConstraints();       // used to place components on GUI
    public Prg_38() {
        super("Interface");                                 // title of Dialog box
        setLayout(new GridBagLayout());         
        gc.insets = new Insets(0,0,2,2);                        // margin between components of GUI (top,left,right,bottom)
        // textarea
        area.setText("textarea");          // default text in textarea
        addComponent(area,0,0);            // method to place components on GUI
        // jbutton
        addComponent(btn1,1,0);            // textare
        addComponent(btn2,2,0);            // textfield

将组件添加到接口后,我将操作侦听器添加到每个组件中,以便在单击文本区域按钮时,将重点更改为文本区域以及单击文本字段按钮,将重点更改为文本字段。

        //radio buttons
        bold = new JRadioButton("Bold",false);              // name of radio button is Bold
        addComponent(bold,1,1);
        italic = new JRadioButton("Italic",false);          // name of radio button is Italic
        addComponent(italic,2,1);
        plain = new JRadioButton("Plain",false);                // name of radio button is Plain
        addComponent(plain,1,2);
        bold_italic = new JRadioButton("Bold and Italic",true);     // // name of radio button is Bold and Italic
        addComponent(bold_italic, 2, 2);
        ButtonGroup group = new ButtonGroup();              // it makes sure that only 1 radiobutton is enabled at a time
        group.add(bold);
        group.add(bold_italic);
        group.add(italic);
        group.add(plain);
        // when radio buttons are added to a group, only one radio button can be selected at a time.
        // jtextfield
        fld.setText("enter your name");                 // default text
        addComponent(fld,0,3);
        // action listeners
        thehandler handler = new thehandler();          // action listener class
        btn1.addActionListener(handler);                // textarea action listener
        btn2.addActionListener(handler);                // textfield 

        bold.addItemListener(new handler1(bf));
        italic.addItemListener(new handler1(itf));

        setVisible(true);               // making GUI visible
        setSize(400,400);               // pixels (x * y)
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);             // Frame quits when X is clicked on top right corner
    }
    public class thehandler implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            if(e.getSource() == btn1) {
                // change focus to textarea named area
                area.requestFocusInWindow();
            }

            if(e.getSource() == btn2) {
                fld.requestFocusInWindow();
            }               

        }
    }

现在我想要的是,如果单击BOLD广播按钮,则选择哪个组件(Textarea和Textfield(,则该组件的文本更改为粗体文本

    public class handler1 implements ItemListener{
        Font font; 
        public handler1(Font f) {
            font = f;
        }
        public void itemStateChanged(ItemEvent event) {
            if((area.isFocusOwner() == true) && (event.getSource() == bold)) {
                area.setFont(font);
            }
        }
    }
    public void addComponent(Component c, int px, int py) {
        gc.gridx = px;                      // column
        gc.gridy = py;                      // row
        add(c, gc);             // add components(textarea, radio button and all other stuff) to GUI
    }
    public static void main(String[] args) {
        new Prg_38();
    }
}

对于任何JComponent,例如JTextField,使用JComponent.requestFocusInWindow()。对于基于AWT的TextArea,将其更改为基于秋千的JTextArea并执行相同的操作。

so:

TextArea area = new TextArea(5,10);

变为:

JTextArea area = new JTextArea(5,10);

和:

public void actionPerformed(ActionEvent e) {
    if(e.getSource() == btn1) {
        // change cursor to textarea named area
    }
    if(e.getSource() == btn2) {
         // change cursor to textfield if btn2 is clicked
    }
}

变为:

public void actionPerformed(ActionEvent e) {
    if(e.getSource() == btn1) {
        area.requestFocusInWindow();
    }
    if(e.getSource() == btn2) {
         fld.requestFocusInWindow();
    }
}

最新更新