3

私はJPaneln 個のJXTitledPanels を持っています。JXTitledPanelユーザーは、 をクリックして削除ボタンを押して削除できる必要があります。

JXTitlePanel私の質問は、ユーザーが何を選択したかをどのように知るかです。

これは私のプログラムの画面です。基本的に、ユーザーに「病院」をクリックしてもらい、削除をクリックすると、病院テーブルが消えます。

スクリーンショット

4

2 に答える 2

3

おそらく、「削除」コントロールを正しい装飾位置に追加します。このようにして、JXTiltedPaneのコントロールへの参照を渡すことができます

titledPane.addRightDecoration(new MyRemoveControl(titkedPane));

またはそのような

于 2012-08-23T13:29:15.337 に答える
0

@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();
            }
        }

    }

}
于 2012-08-24T02:15:55.703 に答える