我有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按钮时,没有任何反应。如何更改代码以便绘制线条?
答案 0 :(得分:0)
永远不会调用Graph_1v.paintComponent(...)。您可以在actionPerformed方法中实例化此类,但不使用其方法paintComponent。
调用此方法后,还尝试调用pCanvas.invalidate()。