3

現在、TopComponent のサイズを手動で変更しようとすると、TopComponent の将来のサイズを示す黒い線が表示されます。

ここに画像の説明を入力

JComponentこの黒い線の背後にあるものを知りたいですか? どうすればアクセスできますか?


編集

私の質問の最初の部分は答えられました。添付の写真に示されているコンポーネントはJSplitPane.

現時点では、アクセスできるようにしたいと考えています (つまり、netbeans プラットフォームでサイズ変更にJSplitPane使用される のインスタンスを取得します。TopComponent

4

1 に答える 1

5
  • JSplitPaneがあり、

  • ただし、Netbeans が Java でコンパイルされているかどうかはわかりません (Eclipse と比較して)

    編集I'd like to add a listener on it.

  • JSplitPane に PropertyChangeListener を追加し、

  • いくつかの便利な方法がありますif (propertyName.equals(JSplitPane.XxxXxx))

  • ネストされた JSplitPane の通知、各 JSplitPane のリスナーを個別に追加する必要があります

  • 例えば

.

import java.awt.Dimension;
import java.awt.GridLayout;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;

public class JSplitPaneToy {

    public static void main(String[] args) {
        JSplitPane sp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, makePanel(), makePanel());
        JPanel pnl = new JPanel();
        pnl.setLayout(new GridLayout(4, 1, 10, 10));
        pnl.add(makePanel());
        pnl.add(makePanel());
        pnl.add(makePanel());
        pnl.add(makePanel());
        PropertyChangeListener propertyChangeListener = new PropertyChangeListener() {

            public void propertyChange(PropertyChangeEvent changeEvent) {
                JSplitPane sourceSplitPane = (JSplitPane) changeEvent.getSource();
                String propertyName = changeEvent.getPropertyName();
                if (propertyName.equals(JSplitPane.LAST_DIVIDER_LOCATION_PROPERTY)) {
                    int current = sourceSplitPane.getDividerLocation();
                    System.out.println("Current: " + current);
                    Integer last = (Integer) changeEvent.getNewValue();
                    System.out.println("Last: " + last);
                    Integer priorLast = (Integer) changeEvent.getOldValue();
                    System.out.println("Prior last: " + priorLast);
                }else if (propertyName.equals(JSplitPane.RESIZE_WEIGHT_PROPERTY)) {
                    int current = sourceSplitPane.getDividerLocation();
                    System.out.println("Current: " + current);
                    Integer last = (Integer) changeEvent.getNewValue();
                    System.out.println("Last: " + last);
                    Integer priorLast = (Integer) changeEvent.getOldValue();
                    System.out.println("Prior last: " + priorLast);
                }
            }
        };
        sp.addPropertyChangeListener(propertyChangeListener);
        JFrame frame = new JFrame("JSplitPane Toy");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new GridLayout(0, 2, 10, 10));
        frame.add(sp);
        frame.add(pnl);
        frame.pack();
        frame.setVisible(true);
    }

    private static JScrollPane makePanel() {
        JScrollPane pane = new JScrollPane(new JTable(
                new Object[][]{{0, 1, 2}, {1, 2, 3}, {2, 3, 4}}, new Object[]{1, 2, 3}));
        pane.setPreferredSize(new Dimension(200, 100));
        return pane;
    }
}
于 2012-10-30T08:25:21.987 に答える