Существует ли цитата, доступная для 'растущего восстания' против строгих систем типов? [закрытый]

Да, это возможно. Один из основных профессионалов для использования Swing является простотой, с которой абстрактные средства управления могут быть созданы и управляют.

Вот быстрый и грязный способ расширить существующий класс JButton, чтобы нарисовать круг направо от текста.

package test;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;

import javax.swing.JButton;
import javax.swing.JFrame;

public class MyButton extends JButton {

    private static final long serialVersionUID = 1L;

    private Color circleColor = Color.BLACK;

    public MyButton(String label) {
        super(label);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        Dimension originalSize = super.getPreferredSize();
        int gap = (int) (originalSize.height * 0.2);
        int x = originalSize.width + gap;
        int y = gap;
        int diameter = originalSize.height - (gap * 2);

        g.setColor(circleColor);
        g.fillOval(x, y, diameter, diameter);
    }

    @Override
    public Dimension getPreferredSize() {
        Dimension size = super.getPreferredSize();
        size.width += size.height;
        return size;
    }

    /*Test the button*/
    public static void main(String[] args) {
        MyButton button = new MyButton("Hello, World!");

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);

        Container contentPane = frame.getContentPane();
        contentPane.setLayout(new FlowLayout());
        contentPane.add(button);

        frame.setVisible(true);
    }

}

Примечание, что путем переопределения paintComponent, что содержание кнопки может быть изменено, но что граница красится метод paintBorder . методом getPreferredSize также нужно управлять для динамичной поддержки изменений в содержании. Необходимо соблюдать осторожность при измерении метрик шрифта и размеров изображения.

Для создания управления, на которое можно полагаться, вышеупомянутый код не является корректным подходом. Размеры и цвета являются динамичными в Swing и зависят от используемого стиля. Даже значение по умолчанию Металл взгляд изменилось через версии JRE. Было бы лучше реализовать AbstractButton и соответствовать инструкциям, изложенным API Swing. Хорошая начальная точка должна посмотреть javax.swing. LookAndFeel и javax.swing. UIManager классы.

http://docs.oracle.com/javase/8/docs/api/javax/swing/LookAndFeel.html

http://docs.oracle.com/javase/8/docs/api/javax/swing/UIManager.html

Понимание анатомии LookAndFeel полезно для записи средств управления: Создание Пользовательского Стиля

6
задан 8 revs, 4 users 61% 11 November 2009 в 18:10
поделиться

2 ответа

Я бы назвал это тенденцией, а не бунтом, но я вижу то же самое в нашей компании, переходящей от C (25 лет назад) к C ++ (20 лет) и java (12 лет) на javascript и python (2 года).

Одной из причин могло быть то, что создание сценариев кажется более гибким и лучше для быстрой разработки (в чем я действительно сомневаюсь). Такое впечатление возникло, когда некоторые разработчики начали создавать хорошие приложения с впечатляющей скоростью разработки, в то время как «старое семейство объектно-ориентированных приложений» часто создавало (чрезмерно) сложные архитектуры приложений, которые демонстрировали удручающий прогресс.

Я думаю, что это не так. быть подготовленным, если критерием является время выхода на рынок (но иногда это помогает избавиться от старых привычек)

3
ответ дан 17 December 2019 в 18:17
поделиться

Согласен с kai1968, это скорее тренд. Вот хороший документ, подготовленный IEEE, который даст вам лучшее понимание Переход разработчиков на языки динамического программирования

0
ответ дан 17 December 2019 в 18:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: