私はJPanel
n 個のJXTitledPanel
s を持っています。JXTitledPanel
ユーザーは、 をクリックして削除ボタンを押して削除できる必要があります。
JXTitlePanel
私の質問は、ユーザーが何を選択したかをどのように知るかです。
これは私のプログラムの画面です。基本的に、ユーザーに「病院」をクリックしてもらい、削除をクリックすると、病院テーブルが消えます。
おそらく、「削除」コントロールを正しい装飾位置に追加します。このようにして、JXTiltedPaneのコントロールへの参照を渡すことができます
titledPane.addRightDecoration(new MyRemoveControl(titkedPane));
またはそのような
@madprogrammer はおそらく最も簡単な答えを持っていますが、アプリケーションの外観を変更したくない場合は、ボタンをパネル のactionListener
と組み合わせることができます。mouseListener
このmouseListener
部分は、最後にクリックされたパネルを保存し、actionListener
によって登録されたパネルを削除するだけmouseListener
です。
これは私が作成した簡単なサンプルです。使用しませんJXTitledPane
が、それらはすべて同じ階層にあるため、問題にはなりません。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TempProject extends JFrame{
public TempProject(){
Box mainContent = Box.createVerticalBox();
//Create Button
JButton removePanel = new JButton("RemovePanel");
RemoveListener listener = new RemoveListener(mainContent);
removePanel.addActionListener(listener);
mainContent.add(removePanel);
//Create Panels
mainContent.add(getPanel(Color.red, listener));
mainContent.add(getPanel(Color.orange, listener));
mainContent.add(getPanel(Color.pink, listener));
mainContent.add(getPanel(Color.magenta, listener));
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setContentPane(mainContent);
pack();
setVisible(true);
}
public JPanel getPanel(Color color, RemoveListener l){
JPanel result = new JPanel();
result.setBackground(color);
result.add(new JLabel(color.toString()));
result.addMouseListener(l);
return result;
}
public static void main(String args[])
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
new TempProject();
}
});
}
public static class RemoveListener extends MouseAdapter implements ActionListener{
Component lastSelectedComponent = null;
Container master; //The panel containing the ones being listened to
public RemoveListener(Container master){
this.master = master;
}
@Override
public void mouseClicked(MouseEvent arg0) {
lastSelectedComponent = (Component)arg0.getSource();
}
@Override
public void actionPerformed(ActionEvent e) {
if(lastSelectedComponent != null){
master.remove(lastSelectedComponent);
master.repaint();
}
}
}
}