Возможно ли создать собственный GUI, подобный этому, в Java?
Я сделал это в Photoshop, и я планирую использовать его для своего приложения для совместного использования файлов:
![Снимок экрана]()
Мне было интересно, можно ли создать графический интерфейс для моего приложения, которое будет иметь этот внешний вид.
Если я не могу построить его только с помощью eclipse или NetBeans, есть ли какие-нибудь другие инструменты, которые могли бы мне помочь?
Ответы
Ответ 1
Не только возможно, но и довольно просто, вам не нужно полностью настраивать внешний вид и чувствовать.
Это то, что я сделал за 20 минут:
![20mins]()
В Интернете много информации о том, как настраивать компоненты, не создавая совершенно новый L & F.
Понимание Swing Architecture помогает много.
На всякий случай, если вы его не прочитали, здесь Swing Tutorial.
Наконец, вам понадобится документ: Java doc
Ответ 2
О, дорогой, нет-нет-нет! Если вы хотите, чтобы глаза ваших пользователей кровоточили, сделайте это. В противном случае следуйте инструкциям интерфейса пользователя, подходящим для вашей платформы.
Чтобы ответить на ваш вопрос: это, безусловно, выполнимо в любой современной оконной системе.
Вот что обычно происходит, когда программисты проектируют пользовательский интерфейс:
(источник: jensroesner.de)
(источник: 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. Кроме этого, возможно.
Ответ 8
Очень возможно использовать Swing.
Просмотрите NetBeans GUI Builder
Ответ 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, понимание того, как работает рисование, довольно сложно, но все же понятно.