在OK JButton上按下JjPanel

时间:2015-05-07 10:52:46

标签: java jpanel drawing

我有1个框架,有2个面板,在X轴上水平对齐。 在左侧面板(pInput)中,我引入了两个x值并按下OK按钮。推后,我想在右侧面板上显示一条线。我有3个类:MainGraph,DartBoardPanel和Graph_1v。我和Netbeans一起工作。这是代码:

MainGraph类:

import javax.swing.JFrame;

public class MainGraph extends JFrame{
    DartboardPanel p = new DartboardPanel();

    MainGraph(){
        add(p);
        pack();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
    // TODO code application logic here
        MainGraph mg = new MainGraph();
   }
}

DartboardPanel类:

public class DartboardPanel extends javax.swing.JPanel implements ActionListener {

public  javax.swing.JPanel pInput; // the panel that contains labels, textfields and jbutton bellow
private javax.swing.JButton btnOK;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JTextField tfX0;
private javax.swing.JTextField tfX1;
public  javax.swing.JPanel pCanvas; //panel on which I want to draw the line
String sX0, sX1;
Graph_1v g1v;

   public DartboardPanel() {
      initComponents();
   }

   private void initComponents() {
   // I deleted the body of the function for sake of readability
   }

   private void actionPerformed(java.awt.event.ActionEvent evt) {
      double x0, x1;

      sX0 = tfX0.getText();
      sX1 = tfX1.getText();
      x0 = Double.valueOf(sX0);
      x1 = Double.valueOf(sX1);
      g1v = new Graph_1v(pCanvas.getWidth(), pCanvas.getHeight(), x0, x1);
      pCanvas.repaint();
    }
  }

Graph_1v Class

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*; 

 public class Graph_1v{
   int W, H, N;
   int ix1, ix2, iy1, iy2;
   double x0, x1, dx;
   double sx;

   Graph_1v(double xa, double xb){
      x0 = xa;
      x1 = xb;
   }

   public void paintComponent(Graphics g){
     ix1 = (int)(10*x0);
     iy1 = 100;
     ix2 = (int)(10*x1);
     iy1 = 150;
     g.drawLine(ix1, iy1, ix2, iy2);
   }
}   

当我按下OK按钮时,没有任何反应。如何更改代码以便绘制线条?

1 个答案:

答案 0 :(得分:0)

永远不会调用Graph_1v.paintComponent(...)。您可以在actionPerformed方法中实例化此类,但不使用其方法paintComponent。

调用此方法后,还尝试调用pCanvas.invalidate()。