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の利用がスムーズに行えるようになります。


コメント