У меня есть главный JPanel
, который называется board
, у которого есть еще один JPanel
в нем с двумя `JButtons ', один из которых должен удалить эту панель при нажатии.JButton занимает 2 клика
public class AditWindow extends JPanel {
private int width;
private int height;
public AditWindow(int x, int y){
super();
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
width=180;
height=60;
setBounds(x, y, width, height);
JButton addLoc = new JButton("Add Location");
JButton addSign = new JButton("Add Sign");
addLoc.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
close();
System.out.println("click");
}
});
addSign.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("addSign");
}
});
Main.font=Main.font.deriveFont(13f);
addLoc.setFont(Main.font);
addSign.setFont(Main.font);
addLoc.setMaximumSize(new Dimension(width, 30));
addSign.setMaximumSize(new Dimension(width, 30));
addLoc.setBackground(new Color(0xF6F6F6));
addSign.setBackground(new Color(0xF6F6F6));
add(addLoc);
add(addSign);
Main.board.validate();
private void close(){
System.out.println("close");
Main.board.del(this);
}
}
ДЭС метод:
public void del(Component c){
remove(c);
validate();
System.out.println("removed");
}
Проблема: по какой-то причине он занимает 2 кликов на панели, чтобы удалить, но линии получить напечатанный на обоих щелчками. Я не уверен, как правильно управлять этой ситуацией.
EIDT: Если я удалю строку validate() из метода del(), она будет работать с первого щелчка, но только кнопки будут исчезать, оставляя на экране прямоугольник фона JPanel.
Значит, как «закрыть», так и «щелкнуть» распечатать? – SomeStudent
@Ageoffan Да, на оба клика он печатает: закрыть удален клик – seMikel
Не могу сказать, что у меня когда-либо была такая проблема, попробуйте, возможно, сделать this.c в методе close? – SomeStudent