Визуализация кнопки GUI в JPanel - PullRequest
0 голосов
/ 30 июля 2009

Считайте, что я написал "Файл" в верхнем левом углу, а затем, как я могу добавить кнопку в верхнем правом углу?

public class FileViewer extends JPanel
{
    private static final long serialVersionUID = 1L;

    public void paintComponent(Graphics g)
    {
        Graphics2D graphic = (Graphics2D)g;
        graphic.drawString("HTML File:", 14, 15);
    }
}

Ответы [ 3 ]

7 голосов
/ 30 июля 2009

Покрасить все компоненты самостоятельно, было бы очень проблематично.

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

В этом случае с помощью свинга вы можете использовать JFrame и JButton поверх JFrame ...

Как это:

альтернативный текст http://img36.imageshack.us/img36/4337/imagen2rrq.png

Это было бы намного проще.

Вот код для этого примера. Очевидно, это просто вкус. Вы можете прочитать учебник Swing

import javax.swing.JFrame;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.Box;
import javax.swing.JPanel;
import java.awt.BorderLayout;


public class SuchCode {
    public static void main( String [] args ) {
        JFrame frame = new JFrame("How can I... ");
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

        JPanel panel = new JPanel();
        BoxLayout boxLayout = new BoxLayout( panel , BoxLayout.LINE_AXIS );
        panel.setLayout( boxLayout  );

        panel.add( new JLabel("File"));
        panel.add( Box.createHorizontalGlue() );
        panel.add( new JButton("Button"));

        frame.add( panel , BorderLayout.NORTH );

        frame.pack();
        frame.setVisible( true );
    }
}

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

1 голос
/ 30 июля 2009

Я собираюсь выйти на конечности и предположить, что вы говорите о позиционировании с помощью Swing (или SWT).

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

Например, руководства по Java здесь показывают, как использовать многие стандартные менеджеры компоновки, которые поставляются с Java. Есть также некоторые, которые не поставляются с Java. Особый интерес представляет SWT, который имеет более платформенный внешний вид.

Обновление:

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

У вас уже есть часть ответа: вы использовали Graphics2D.drawString(String,x,y), где x и y указывают место для рисования.

Вам нужно изменить x и y, чтобы нарисовать в верхнем правом углу. На самом деле, нужно изменить только x.

Вот где это сложно. Вы должны вычислить y в зависимости от размера вашего рабочего пространства и размер вашей текстовой строки.

Я не знаю специфики Java, поскольку я никогда не делал графический вывод, но вполне вероятно, что:

  • есть метод, который вы можете вызвать graphic, чтобы вернуть доступный прямоугольник рисования; это даст вам максимальное значение y.
  • вам нужно будет передать строку в другой метод, чтобы получить необходимую для него ширину (на основе информации о шрифте).

Если у вас есть оба из них, просто вычтите второе из первого, и у вас должно быть начальное значение y, чтобы строка завершилась в верхнем правом углу.

0 голосов
/ 30 июля 2009

Вы можете добавить кнопку в конструктор, используя метод add (). Вы можете установить выравнивание вправо так, чтобы кнопка была нарисована вправо

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...