[英]Not able to add custom class to panel in IntelliJ GUI Designer
I've made a child class of JPanel for the graph plotting, added it to Palette, but when I'm trying to add it to the main panel nothing happens. 我为图形绘制制作了一个JPanel的子类,将其添加到Palette,但是当我尝试将其添加到主面板时,什么也没有发生。 Also if I try to add it as Non-Palette Component the dialog just closes and reopens again, asking to choose the class to add. 同样,如果我尝试将其添加为“非调色板组件”,则对话框将关闭并再次重新打开,要求选择要添加的类。 Here's the class: 这是课程:
import javax.swing.*;
import java.awt.*;
/**
* Created by gray on 05.11.14.
*/
public class PPanel extends JPanel {
// Object for the class realizing graph function
public Plotter G;
// Internal class for realization of graph function
class Plotter{
// rane of the coordinats
private double Xmin=0, Xmax=10.0, Ymin=0, Ymах= 120.0;
// graph line color:
private Color clr;
// grid line color:
private Color gclr;
// class constructor
Plotter(){
// read the text field and convert it into the number:
/* try{
Xmax=Double.valueOf(xmaxTF.getText());}
catch(NumberFormatException е){
xmaxTF.setText("10");
Xmax=10;}*/
// initializing grid line color:
gclr=Color.GRAY;
// initializing graph line color:
clr=Color.BLACK;
}
// the function that is being displayed:
private double f(double x){
return (3*Math.exp(0.4*x)); }
// methode for the grid display
public void plot(Graphics Fig){
// parameters for the range in which graph is being displayed
int H,W,h,w,s=20;
H=getHeight();
W=getWidth();
h=H-2*s;
w=W-2*s;
// clearing the graph
Fig.clearRect(0,0,W,H);
// index and quantity of grid lines
int k, nums=10;
Fig.setColor(Color.BLACK);
// coordinate axis:
Fig.drawLine(s,s,s,h+s);
Fig.drawLine(s,s+h,s+w,s+h);
for(k=0;k<=nums;k++){
Fig.drawLine(s+k*w/nums, s+h, s+k*w/nums, s+h+5);
Fig.drawLine(s-5,s+k*h/nums,s,s+k*h/nums);
Fig.drawString(Double.toString(Xmin+k*(Xmax-Xmin)/nums),
s+k*w/nums-5,s+h+15);
Fig.drawString(Double.toString(Ymin+k*(Ymах-Ymin)/nums),s-17,
s+h-1-k*h/nums);
}
Fig.setColor(gclr);
// grid lines:
for(k=1;k<=nums;k++){
Fig.drawLine(s+k*w/nums,s,s+k*w/nums,h+s);
Fig.drawLine(s,s+(k-1)*h/nums,s+w,s+(k-1)*h/nums);
}
// grаph display:
Fig.setColor(clr); // setting graph line color
// scaling coefficient:
double dx=(Xmax-Xmin)/w,dу=(Ymах-Ymin)/h;
// cartesian coordinates:
double x1,x2,y1,y2;
// window coordinates:
int h1,h2,w1,w2;
// initial values
x1=Xmin;
y1=0;
w1=s;
h1=h+s-(int)Math.round(y1/dу);
int step=5;
// displaying the dots and connecting them with lines:
for(int i=step;i<=w;i+=step){
x2=i*dx;
y2=y1+(x2-x1)*f(x2) ;
w2=s+(int)Math.round(x2/dx);
h2=h+s-(int)Math.round(y2/dу);
Fig.drawLine(w1,h1,w2,h2);
Fig.drawRect(w1-2,h1-2,4,4);
// new values:
x1=x2;
y1=y2;
w1=w2;
h1=h2;
}
}
}
// panel constructor
PPanel(){
// creating the object for the plot function:
G=new Plotter();
// setting the background color of the panel:
setBackground(Color.WHITE);
}
// redefinition of the paint method:
public void paint(Graphics g){
// when redrawing the panel redraw graph as well
G.plot(g);
}
}
And this is how it looks on the palette. 这就是它在调色板上的外观。 But when I drag'n'drop it to the form nothing happens. 但是,当我将其拖放到窗体上时,什么也没有发生。 The default elements are working just fine. 默认元素可以正常工作。 What's wrong? 怎么了?
Aaaand I fixed it. Aaaand我修好了。 Solution: set bytecode and compiler versions to the same one. 解决方案:将字节码和编译器版本设置为相同的版本。 Solution for the resize problem - set horizontal and vertical aligns to fill. 调整大小问题的解决方案-设置水平和垂直对齐以填充。 Also had to create and object of that class in createUIComponents() 还必须在createUIComponents()中创建该类的对象
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.