JScrollPane
Java アプリケーションで使用するときに小さな問題があります。
をJScrollPane
含む がありJPanel
ます。これJPanel
は、任意の幅のボタン (垂直方向に並べられたもの) で動的に更新されます。は、その幅を内部JPanel
の最大のコンポーネントに合わせて自動的に調整します。JButton
垂直スクロールバーが表示されると、 my の右側のスペースが取り除かれJPanel
、最大のボタンが完全に表示されなくなります。ボタン全体を表示することに加えて、水平スクロールバーを使用したくありません。
スクロールバーが表示されたときにサイズを変更JPanel
して、ボタンの横にきれいに表示する方法はありますか? または、スクロールバーを私の横に表示する他の方法はありますJPanel
か?
前もって感謝します!
編集:これは私の問題のデモです。ウィンドウのサイズを小さくすると、右側のボタンの一部が隠れてしまいます。
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import java.awt.GridLayout;
/**
* @author Dylan Kiss
*/
public class Demo {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
JFrame myFrame = new JFrame("Demo");
JPanel sideBar = new JPanel();
JPanel centerPanel = new JPanel();
centerPanel.add(new JLabel("This is the center panel."));
JPanel buttonContainer = new JPanel();
JButton myButton = null;
for (int i = 0; i < 20; i++) {
buttonContainer.setLayout(new GridLayout(20, 1, 0, 0));
myButton = new JButton("This is my button nr. " + i);
buttonContainer.add(myButton);
}
sideBar.setLayout(new BorderLayout(0, 0));
JScrollPane scrollPane = new JScrollPane(buttonContainer);
sideBar.add(scrollPane);
myFrame.getContentPane().add(sideBar, BorderLayout.WEST);
myFrame.getContentPane().add(centerPanel, BorderLayout.CENTER);
myFrame.setLocationByPlatform(true);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.pack();
myFrame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}