0
필자가 작성한 응용 프로그램에서 JPanel
을 다시 인스턴스화해야합니다 (기본적으로 사용자가 그래프를 작성할 수있는 입력 창이있어서 CardLayout
을 사용하여 사용자가이를 비울 수 있기를 바랍니다. 하지 옵션), 나는 이런 식으로 뭔가를 사용하여 생각하고 있었는데 :jpanels 다시 인스턴스화
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class AppletProve extends JPanel implements MouseListener, MouseMotionListener{
private JPanel p1;
public AppletProve(){
super();
setLayout(null);
Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
dim.width=(int) (dim.width*0.66);
dim.height=(int) (dim.height*0.75);
setPreferredSize(dim);
addMouseListener(this);
}
public void crea(){
p1=new JPanel();
p1.setBounds(10,10,60,70);
p1.setBackground(Color.YELLOW);
JLabel lbl1=new JLabel("prova1");
p1.add(lbl1);
add(p1);
}
public void collega(){
remove(p1);
p1=new JPanel();
p1.setBounds(10,10,60,70);
p1.setBackground(Color.BLUE);
JLabel lbl2=new JLabel("prova2");
p1.add(lbl2);
add(p1);
}
@Override
public void mouseClicked(MouseEvent arg0) {
System.out.println("chiamato");
collega();
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseDragged(MouseEvent arg0) {
repaint();
}
@Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
,하지 않을 것이다 빈 상태로만 패널을 다시 인스턴스화해야한다면 나쁘지 만 데코레이터 패턴을 통해 패널에 책임을 추가 할 때도이 방법을 사용하려고 생각했기 때문에 새 reinsta의 구성 요소를 표시해야합니다. 고 말했다.
그래서 새 JPanel을 만들어 레이아웃에 추가 한 다음 이전 JPanel을 제거해야한다고 말하고 있습니까? Eclipse의 WindowBuilder를 사용하여 패널을 작성하는 데 도움이 될 수 있습니다. (오 btw, 코드에 문제가 있음을 알았습니다. 유효성 검사를 잊어 버렸습니다()) – Orgrim
나는 그것에 대해 깊이 생각하지 않았습니다. 당신의 코드를 자세히 보았습니다). 나는 당신의 게시물이 오해에 근거한 것이라고 지적하고있었습니다. –