Java SwingでJSplitPaneの仕切線の位置を取得する方法とエラー解決法

Java

Java SwingでJSplitPaneを使用して、仕切線(ディバイダ)の現在の位置を取得したいが、エラーが発生して困っている場合、どのように解決すれば良いかについて解説します。特に、”シンボルを見つけられません”というエラーに関する原因と解決策を紹介します。

1. エラーの原因と解決方法

質問者が直面しているエラーは、”splitpane”という変数名が正しくないことが原因です。コード内で”splitpane”と記述されていますが、コンストラクタで定義されている変数名は”splitPane”です。このように、大文字と小文字を区別するJavaでは、変数名が一致しない場合、コンパイルエラーが発生します。

エラーを解決するためには、”splitpane”を”splitPane”に修正する必要があります。以下のように修正します。

splitPane = new JSplitPane();

2. 正しいコードの修正例

以下に、修正後の正しいコードを示します。これにより、JSplitPaneの仕切線の位置を正常に取得できるようになります。

import javax.swing.*;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.awt.BorderLayout;
import java.awt.event.*;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.border.BevelBorder;

public class JSplitPane07_5 extends JFrame implements ActionListener {

    JSplitPane splitPane;
    JLabel posLabel;

    public static void main(String[] args) {
        JSplitPane07_5 frame = new JSplitPane07_5();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("JSplitPane サンプル07");
        frame.setBounds(100, 200, 400, 300);
        frame.setVisible(true);
    }

    JSplitPane07_5() {
        splitPane = new JSplitPane();
        JPanel leftPanel = new JPanel();
        JButton leftButton = new JButton("Left");
        leftPanel.add(leftButton);

        JButton button = new JButton("get");
        button.addActionListener(this);

        posLabel = new JLabel("pos:");

        JPanel labelPanel = new JPanel();
        labelPanel.add(posLabel);
        labelPanel.add(button);
    }

    public void actionPerformed(ActionEvent e){
        int pos = splitPane.getDividerLocation();
        posLabel.setText("pos:" + pos);
    }
}

3. JSplitPaneの仕切線の位置を取得する方法

仕切線の位置は、”getDividerLocation()”メソッドを使って取得できます。このメソッドは、JSplitPaneの現在の仕切線の位置(整数値)を返します。例えば、以下のコードで仕切線の位置を取得し、その値をJLabelに表示することができます。

int pos = splitPane.getDividerLocation();
posLabel.setText("pos:" + pos);

4. まとめ

“splitpane”という変数名の不一致が原因でエラーが発生していました。変数名を”splitPane”に修正することで、エラーは解決し、仕切線の位置を取得することができます。これにより、Java SwingでのJSplitPaneの利用がスムーズに行えるようになります。

コメント

タイトルとURLをコピーしました