Возможно ли создать собственный GUI, подобный этому, в Java?

Я сделал это в Photoshop, и я планирую использовать его для своего приложения для совместного использования файлов:

Снимок экрана

Мне было интересно, можно ли создать графический интерфейс для моего приложения, которое будет иметь этот внешний вид.

Если я не могу построить его только с помощью eclipse или NetBeans, есть ли какие-нибудь другие инструменты, которые могли бы мне помочь?

Ответ 1

Не только возможно, но и довольно просто, вам не нужно полностью настраивать внешний вид и чувствовать.

Это то, что я сделал за 20 минут:

20mins

В Интернете много информации о том, как настраивать компоненты, не создавая совершенно новый L & F.

Понимание Swing Architecture помогает много.

На всякий случай, если вы его не прочитали, здесь Swing Tutorial.

Наконец, вам понадобится документ: Java doc

Ответ 2

О, дорогой, нет-нет-нет! Если вы хотите, чтобы глаза ваших пользователей кровоточили, сделайте это. В противном случае следуйте инструкциям интерфейса пользователя, подходящим для вашей платформы.

Чтобы ответить на ваш вопрос: это, безусловно, выполнимо в любой современной оконной системе.

Вот что обычно происходит, когда программисты проектируют пользовательский интерфейс:

wGetGUI
(источник: jensroesner.de)

Bulk Rename Utility (источник: bulkrenameutility.co.uk)

Ответ 3

Вы можете и даже можете изменить его динамически - см. Функция Look-n-Feel качания

Ответ 4

Это возможно. Но для большинства разработчиков Java это потребовало бы подавления рефлекса gag на таком уродливом интерфейсе.

Здесь Java-интерфейс Я написал, не используя никаких других инструментов, кроме vi. Я не проектировал его, я просто рисовал дизайн художников, держал нос и реализовывал его.

Что касается особенностей, я бы посоветовал сделать так же, как и внешний вид с помощью подключаемого внешнего вида в Swing. Кроме того, используйте LayoutManagers вместо того, чтобы делать вещи постоянными размерами в постоянных местах, чтобы вещи могли расти и уменьшаться до разных разрешений экрана, а также чтобы, если вы переводите то, что вам не нужно изменять все текстовые метки, а затем перетасовывать все еще вокруг.

Ответ 5

Создание нового LaF слишком много. Поскольку все ваши JButtons разные, просто используйте JButton.setIcon() и JButton.setPressedIcon() и используйте свои изображения. Остальное - загрузка фона и использование странных шрифтов. Используйте Font.createFont() для загрузки пользовательских шрифтов. Вам, вероятно, придется нарисовать свой собственный JProgressbar. Переопределите JProgressBar.paintComponent(Graphics g) и нарисуйте собственное изображение.

Ответ 6

Ну, это очень возможно, хотя многие разработчики Java Swing могут не согласиться с пользовательским интерфейсом в изображении. возможно, правильно.

Чтобы сделать это, попробуйте взглянуть на JWindow, JTable, ImageIcon, Dimension, JProgressBar. Вам также потребуется достаточное понимание для макетов Java и событий, таких как MouseEvents, ActionEvents.

Надеюсь, что это поможет.

Ответ 7

Вам нужно будет создать множество пользовательских JComponents. Кроме этого, возможно.

Ответ 9

Я бы порекомендовал

Макет МиГ

для компоновки компонентов, это очень легко понять, а также более мощным, чем стандартные менеджеры макетов (и он также получил хороший режим отладки).

Ответ 10

Я должен не согласиться с вами! На самом деле вы можете использовать NetBeans для создания такого графического интерфейса. Это тоже легко, у вас есть много вариантов для работы! Те, которые я лично использую:

1) Создайте графику с помощью программного обеспечения для рисования и установите его в качестве значка для компонента. Я использую для процесса проектирования InkScape, но любое программное обеспечение должно сработать. Вы должны быть осторожно осторожны в этом процессе, потому что вы не можете изменить размер изображений в NetBeans (ну, я никогда не пробовал).

2) расширить класс пользовательского интерфейса (Пример: открытый класс CustomButtonUI, расширить BasicButtonUI) и переопределить метод рисования, затем использовать функцию setUI (componentName.setUI(new CustomButtonUI);)

Это пример кода:

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.plaf.basic.BasicButtonUI;

/**
 *
 * @author Ionut Cicio
 */
public class CustomButton extends BasicButtonUI{

    int borderThickness, edgeRoundness;

    @Override
    public void paint(Graphics g, JComponent c) {
        Graphics2D g2 = (Graphics2D)g;
        g2.setColor(c.getBackground());

        borderThickness = 2;
        edgeRoundness = 20;

        g2.setColor(c.getForeground());
        g2.fillRoundRect(0, 0, c.getWidth(), c.getHeight(), edgeRoundness+5, edgeRoundness+5);
        g2.drawRoundRect(0, 0, c.getWidth(), c.getHeight(), edgeRoundness+5, edgeRoundness+5);
        //g2.fillRect(0, 0, c.getWidth(), c.getHeight());
        //g2.drawRect(0, 0, c.getWidth(), c.getHeight());

        g2.setColor(c.getBackground());
        g2.fillRoundRect(borderThickness, borderThickness, c.getWidth()-(int)(borderThickness*2.5), c.getHeight()-(int)(borderThickness*2.5), edgeRoundness, edgeRoundness);
        g2.drawRoundRect(borderThickness, borderThickness, c.getWidth()-(int)(borderThickness*2.5), c.getHeight()-(int)(borderThickness*2.5), edgeRoundness, edgeRoundness);

        super.paint(g, c);
    }

    @Override
    protected void paintFocus(Graphics g, AbstractButton b, Rectangle viewRect, Rectangle textRect, Rectangle iconRect) {

    }
}

Всегда случается, что оба метода используются вместе, и это дает вам действительно большое преимущество при работе над анимацией !

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