.drawLine для события (нажатие кнопки) Jpanel / Jbutton / JTabbedPane - PullRequest
0 голосов
/ 19 ноября 2010

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

class CustomPanel extends JPanel {

    private int destx = 100;
    private int desty = 100;
    private int startx = 0;
    private int starty = 0;

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawLine(startx, starty, destx, desty);
    }

} 

Как бы я назвал этот компонент краски (или аналогичный, который рисует линию) из слушателя действия?

Вот мой список действий: (Это на GUI.java, в то время как код выше на CustomPanel.java)

public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == loginButton)
        {
            //Does other stuff but removed for simplifying
            CustomPanel cp = new CustomPanel();
        }
    }

Большое спасибо,

Ответы [ 3 ]

0 голосов
/ 19 ноября 2010

Просто добавьте ваш CustomPanel к любому другому JComponent и обновите пользовательский интерфейс. Свинг позаботится обо всей живописи для вас.

Вот полезное руководство по живописи в стиле свинг;
http://java.sun.com/products/jfc/tsc/articles/painting/#paint_process

0 голосов
/ 19 ноября 2010

Ваш вопрос не имел смысла для меня в вашей последней публикации, и он все еще не имеет смысла для меня в этой публикации.

Вы еще не опубликовали SSCCE который пытается продемонстрировать, что вы хотите сделать.

Если у вас есть «панель входа», обычно это делается путем создания модального JDialog.

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

Прочитайте раздел из учебника Swing на Как использовать корневые панели для примерови более подробная информация.

0 голосов
/ 19 ноября 2010

Вы должны добавить его в графический интерфейс.Примерно так:

 SwingUtilities.invokeLater(new Runnable() {
     public void run() {
         parentPanel.add(new CustomPanel());
         parentPanel.revalidate();
         parentPanel.repaint();
     }
 });

Но если вы хотите нарисовать линию на текущем контейнере, это другое дело ...

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