.drawLine on event(按钮点击)Jpanel / Jbutton / JTabbedPane

时间:2010-11-19 12:09:35

标签: java swing

我知道如何为摇摆中的按钮点击操作动作侦听器,但我有这个类做了一些东西,但我想要一个函数/事件,当单击一个按钮时,它运行一个类似于下面的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);
    }

} 

如何从动作侦听器中调用此paintcomponent(或类似的绘制线条)?

这是我的actionlistener :(它在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 :(得分:0)

你需要把它添加到gui。像这样:

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

但是如果你只想在当前容器上画一条线,这是另一回事......

答案 1 :(得分:0)

只需将CustomPanel添加到任何其他JComponent并更新用户界面即可。 Swing为您照顾所有的画作。

这是一个非常有用的摆动画作指南;
http://java.sun.com/products/jfc/tsc/articles/painting/#paint_process

答案 2 :(得分:0)

在你的上一篇文章中,你的问题对我没有意义,在这篇帖子中对我来说仍然没有意义。

您仍然没有发布试图证明您想要做的事情的SSCCE

如果您有“登录面板”,通常可以通过创建模态JDialog来完成。

如果您尝试在框架中的所有组件的顶部绘制对角线,则需要使用“玻璃”窗格或“分层”窗格。

阅读How to Use Root Panes上Swing教程中的部分以获取示例和更多详细信息。