Nano Hash - криптовалюты, майнинг, программирование

Превращение JLabel в другой JLabel

Итак, вот моя проблема. У меня есть JPanel с JLabel на нем, и я хочу, чтобы после того, как JLabel щелкнули, он должен изменить размер (в идеале он изменится с его масштабом, но пока я использую постоянное значение). Я вернул изображение, и теперь я могу масштабировать его, но мне просто не удается сделать исходный JLabel новым размером.

Вот что должно получиться в идеале, e.getSource должен стать только что увеличенным в размерах JLabel.

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

Почему нельзя ((JLabel)me.getSource = a; где a — мой новый JLabel?

В любом случае, вот мой код:

Пожалуйста, помогите мне.

public void mousePressed(MouseEvent me) {
        //GreetingCard.setBackground.findComponentAt(me.getX(), me.getY());
        //GreetingCard.setBackground.findComponentAt(me.getX(), me.getY)

      JLabel a= (JLabel) me.getSource();
      Icon icon = a.getIcon();

        int scale = 4;

        BufferedImage bi = new BufferedImage(
            scale*icon.getIconWidth(),
            scale*icon.getIconHeight(),
            BufferedImage.TYPE_INT_ARGB);
            Graphics2D g = bi.createGraphics();
            g.scale(scale,scale);
            icon.paintIcon(null,g,0,0);
            g.dispose();
            JLabel temp = new JLabel(new ImageIcon(bi));
            ((JLabel)me.getSource())= temp;

        JOptionPane.showMessageDialog(
            null,
            new JLabel(new ImageIcon(bi)));

      System.out.println("The size of the image is" + b.getIconWidth());
      initiateEvent = me;
        me.consume();



}
30.10.2012

  • Чего вы пытаетесь достичь с помощью утверждения ((JLabel)me.getSource())= temp;? Выражения (такие как ((JLabel)me.getSource())) не допускаются слева от знака =. Скорее всего, вам потребуется получить родителя источника события, удалить существующую метку и добавить новую. 31.10.2012

Ответы:


1

me.getSource() возвращает JLabel, он не возвращает переменную, которой вы можете присвоить новое значение.

Вероятно, лучший способ — не создавать новый JLabel, а просто присвоить новый ImageIcon старому JLabel.

((JLabel)me.getSource()).setIcon(new ImageIcon(bi));

Вам также необходимо вызвать метку или панель updateUI(), чтобы принудительно выполнить «жесткую» перерисовку с изменением размера.

30.10.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..