第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

按下按鈕后如何使用自己的 ActionListener 類(lèi)將文本附加到 JTextArea

按下按鈕后如何使用自己的 ActionListener 類(lèi)將文本附加到 JTextArea

飲歌長(zhǎng)嘯 2022-12-21 15:09:29
嘿,我想要一個(gè) JFrame,它必須包含按鈕“LeftButton”和“RightButton”以及一個(gè) JTextArea。在我按下兩者之一之后,我希望 JTextArea 在新的一行中寫(xiě)入哪些按鈕已被按下。為了做到這一點(diǎn),我想使用一個(gè) MyActionListener 類(lèi),并引用 JTextArea,它實(shí)現(xiàn)了 Actionlistener。我試圖為 ActionPerformed 提供 JTextArea 并意識(shí)到我必須自己創(chuàng)建 Setters。然后我意識(shí)到 MyActionListener 類(lèi)還需要一個(gè)像 JTextArea 這樣的對(duì)象,它與 JFrame 類(lèi)中的相同。然后我發(fā)現(xiàn)我還必須更新 JFrame 類(lèi)中的 JTextArea,現(xiàn)在我有點(diǎn)卡住了。我試圖將 Setters 放入 JFrame 類(lèi)并從 MyActionListener 調(diào)用它們但沒(méi)有成功,我嘗試做類(lèi)似的事情A_18_c.south = southpackage Aufgabe_18;import javax.swing.*;import java.awt.*;public class A_18_c extends JFrame {    private Button LeftButton;    private Button RightButton;    private JScrollPane scroll;    private JTextArea south;    private MyActionListener MAL;    public static void main(String[] args) {        A_18_c l = new A_18_c("Aufgabe18c");    }    public A_18_c(String title) {        super(title);        setSize(300, 150);        this.setLocation(300, 300);        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);        MAL = new MyActionListener(south);        south = new JTextArea(5, 20);        south.setEditable(false);        JScrollPane sroll = new JScrollPane(south);        this.add(sroll, BorderLayout.SOUTH);        LeftButton = new Button("Left Button");        LeftButton.setOpaque(true);        LeftButton.addActionListener(MAL);        this.add(LeftButton, BorderLayout.WEST);        RightButton = new Button("Right Button");        RightButton.setOpaque(true);        RightButton.addActionListener(MAL);        this.add(RightButton, BorderLayout.EAST);        setVisible(true);    }}我的動(dòng)作監(jiān)聽(tīng)器:package Aufgabe_18;import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;我希望 JTextArea 寫(xiě)下哪個(gè) Button 已被按下,但按下后沒(méi)有任何反應(yīng)。沒(méi)有錯(cuò)誤彈出。
查看完整描述

1 回答

?
慕容森

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊

我試著在 JDK8 上編譯你的代碼,它給出了錯(cuò)誤,我可以看到它幾乎沒(méi)有問(wèn)題。


首先是:


MAL = new MyActionListener(south);


south = new JTextArea(5, 20);

south.setEditable(false);

您將 Null 作為參數(shù)傳遞給您的偵聽(tīng)器。在將構(gòu)造函數(shù)中的“south”傳遞給 MAL 之前,您必須先對(duì)其進(jìn)行初始化。此外,Button 沒(méi)有任何方法作為 getString。它具有用于 JButton 的 getLabel 或 getText。同樣正如@vince 所說(shuō),在“LeftButton”中添加空格。我對(duì)你的代碼做了一些調(diào)整。下面是工作代碼。為簡(jiǎn)單起見(jiàn),我在同一個(gè)文件中添加了自定義監(jiān)聽(tīng)器,并將 Button 替換為 JButton(您已經(jīng)在使用 swing 的 JFrame,因此最好嘗試使用所有 swing 組件)。你會(huì)得到這個(gè)的要點(diǎn):


import javax.swing.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.*;


public class Test extends JFrame {

    private JButton LeftButton;

    private JButton RightButton;

    private JScrollPane scroll;

    private JTextArea south;

    private MyActionListener MAL;


    public static void main(String[] args) {

        Test l = new Test("Aufgabe18c");

    }


    public Test(String title) {

        super(title);

        setSize(300, 150);

        this.setLocation(300, 300);

        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);


        //initialize south

        south = new JTextArea(5, 20);

        south.setEditable(true);


        //pass it to your Listener

        MAL = new MyActionListener(south);

        JScrollPane scroll = new JScrollPane(south);

        this.add(scroll, BorderLayout.SOUTH);


        LeftButton = new JButton("Left Button");

        LeftButton.setOpaque(true);

        LeftButton.addActionListener(MAL);

        this.add(LeftButton, BorderLayout.WEST);


        RightButton = new JButton("Right Button");

        RightButton.setOpaque(true);

        RightButton.addActionListener(MAL);

        this.add(RightButton, BorderLayout.EAST);


        setVisible(true);

    }



public class MyActionListener implements ActionListener{


    private final JTextArea south;


    public MyActionListener(JTextArea south)

    {

        this.south = south;

    }


    private void setTextLeftButton(JTextArea south){

        south.append("Left Button \n");

    }


    private void setTextRightButton(JTextArea south){

        south.append("Right Button \n");

    }


@Override

        public void actionPerformed(ActionEvent e) {

        String a;

        Object src = e.getSource();

        JButton b = null;

        b = (JButton) src;

        a = b.getText();

        if (a == "Left Button")

            setTextLeftButton(south);

        else

            setTextRightButton(south);

    }

}

}



查看完整回答
反對(duì) 回復(fù) 2022-12-21
  • 1 回答
  • 0 關(guān)注
  • 123 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)