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
}
}
問題はパネルP1が再インスタンス化されている間、背景色が変化するので、LBL2はないだろうこれは、示されていないということですパネルを空白の状態に再インスタンス化しなければならない場合はそれが悪いですが、このメソッドをデコレータパターンを使用してパネルに追加することも考えていましたので、新しいreinstaのコンポーネントを表示する必要がありますパネルを通過する。
新しいJPanelを作成してレイアウトに追加し、古いJPanelを削除する必要があると言っていますか?それは私がEclipseのWindowBuilderを使って作ったので、パネルをそのJFrameに置くのに役立つかもしれません(ああ、私はコードの何が間違っているのか分かりました:私は()を検証するのを忘れました) – Orgrim
私はそれについて深く考えなかったあなたのコードをよく見ていました)。私はあなたの投稿が誤解に基づいていることを単に指摘していました。 –