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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JButton中的自動換行

JButton中的自動換行

暮色呼如 2019-11-20 10:56:03
是否可以在JButtons中實現(xiàn)文本自動自動換行?我在運行時創(chuàng)建了幾個動態(tài)按鈕。我想在按鈕上使用自動換行功能,以便可以對按鈕進(jìn)行更好的測試。有可能這樣做嗎?
查看完整描述

3 回答

?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗 獲得超8個贊

最簡單的方法是修改另一個支持自動換行的Component,以使其充當(dāng)Button。我做了一個簡單的類,它操縱JTextArea充當(dāng)Button。


 public class MultiLineButton extends JTextArea implements MouseListener    {

    /**

     * 

     */

    private static final long serialVersionUID = 1L;

    private Color defaultColor;

    private Color highlight, lightHighlight;

    private BtnState state;

    private List<ActionListener> actionListeners;


    public MultiLineButton(String text, Color defaultColor) {

        this.setEditable(false);

        this.setText(text);

        this.setLineWrap(true);

        this.setWrapStyleWord(true);

        this.addMouseListener(this);

        this.setBorder(new EmptyBorder(5, 10, 5, 10));

        state = BtnState.NORMAL;

        this.defaultColor = defaultColor;

        this.setBackground(defaultColor);

        highlight = new Color(122, 138, 153);

        lightHighlight = new Color(184, 207, 229);

        // clickedColor = new Color(r, g, b);/

        actionListeners = new ArrayList<>();

    }


    @Override

    public Color getSelectionColor() {

        return getBackground();

    }


    @Override

    public void mouseClicked(MouseEvent e) {

    }


    @Override

    public void mousePressed(MouseEvent e) {

        setBackground(lightHighlight);

        state = BtnState.CLICKED;

        repaint();

    }   


    @Override

    public void mouseReleased(MouseEvent e) {

        for (ActionListener l : actionListeners) {

            l.actionPerformed(new ActionEvent(this,     ActionEvent.ACTION_PERFORMED, this.getText()));

        }

        setBackground(defaultColor);

        state = BtnState.NORMAL;

        repaint();

    }


    @Override

    public void mouseEntered(MouseEvent e) {

        state = BtnState.HOVERED;

        repaint();

    }


    @Override

    public void mouseExited(MouseEvent e) {

        setBackground(defaultColor);

        state = BtnState.NORMAL;

        repaint();

    }


    @Override

    public void paintBorder(Graphics g) {

        super.paintBorder(g);

        Graphics g2 = g.create();

        g2.setColor(highlight);

        switch (state) {

        case NORMAL:

            g2.drawRect(0, 0, getWidth() - 1, getHeight() - 1);

            break;

        case HOVERED:

            g2.drawRect(1, 1, getWidth() - 3, getHeight() - 3);

            g2.setColor(lightHighlight);

            g2.drawRect(0, 0, getWidth() - 1, getHeight() - 1);

            g2.drawRect(2, 2, getWidth() - 5, getHeight() - 5);

            break;

        case CLICKED:

            Border b = new BevelBorder(BevelBorder.LOWERED);

            b.paintBorder(this, g2, 0, 0, getWidth(), getHeight());

            break;

        }

        g2.dispose();

    }


    public void addActionListener(ActionListener l) {

        actionListeners.add(l);

    }


    public List<ActionListener> getActionListeners() {

        return actionListeners;

    }

}

BtnState只是一個具有常量NORMAL,HOVERED,CLICKED的枚舉


大多數(shù)代碼僅用于使JTextArea看起來像JButton,并且效果很好。缺點之一是您無法通過ButtonModels修改它,但是對于大多數(shù)應(yīng)用程序來說,這就足夠了。


查看完整回答
反對 回復(fù) 2019-11-20
  • 3 回答
  • 0 關(guān)注
  • 988 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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