Java の SpringLayout マネージャーを使用すると、非常に奇妙な問題が発生します。プログラムにツールバーを表示しようとしています。私のプログラムの初期の時点では機能していましたが、現在は機能しません。基本的に、JPanel のインスタンス化からレイアウト パラメータを削除すると、JPanel に追加した要素が表示されますが、カスタマイズは行われません。インスタンス化にそのパラメーターがある場合、ツールバーはまったく表示されません。何をジャッキアップしたのか、間違っているのかわかりません。JPanel は中央の JFrame に入ります。これは、BorderLayout から別の SpringLayout に変更しましたが、この問題には影響していないようです。
public class purchaserApp
{
static JFrame mainWindow; //Main window
static JFrame addView = new JFrame ("Add An Item..."); //Add item window
static JFrame aboutView = new JFrame ("About Purchaser"); //About window
static JFrame helpView = new JFrame ("Purchaser Help"); //Help window
static JPanel toolBar, contentArea, previewPane; //Panels for GUI
static JRootPane root;
static JToolBar toolBar2;
//SpringLayout mainLayout;
JTable table;
public purchaserApp()
{
makemainWindow();
makeMenu();
makeToolbar();
// makeMainContentView();
mainWindow.setVisible(true);
}
public void makeToolbar()
{
SpringLayout tbLayout = new SpringLayout();
toolBar = new JPanel(tbLayout); //this is the offending line of code, if I remove "tbLayout" the buttons show up in the GUI but obviously without the customizations I made below...
JButton toolBarButtons[];
String buttonNames[] = {"Add", "Edit", "Delete"};
//Instantiate buttons for toolbar
toolBarButtons = new JButton[3];
//Resize
Dimension d = new Dimension (40,55);
//Add/modify/whatever
for (i = 0; i < 3; i++)
{
toolBarButtons[i] = new JButton(buttonNames[i]);
toolBarButtons[i].setPreferredSize(d);
tbLayout.putConstraint(SpringLayout.NORTH, toolBarButtons[i], 5, SpringLayout.NORTH, toolBar);
}
//Adjust constraints
tbLayout.putConstraint(SpringLayout.WEST, toolBarButtons[0], 5, SpringLayout.WEST, toolBar);
tbLayout.putConstraint(SpringLayout.WEST, toolBarButtons[1], 5, SpringLayout.EAST, toolBarButtons[0]);
tbLayout.putConstraint(SpringLayout.EAST, toolBarButtons[2], -5, SpringLayout.EAST, toolBar); //due to x-axis, we must go negative to get inside the frame
for (i = 0; i < 3; i++)
toolBar.add(toolBarButtons[i]);
mainWindow.add(toolBar,BorderLayout.NORTH); //Lies! Does not add
}
ここにクラスと問題のあるメソッドを含めました。私はこの問題を抱えた最初の人ではないと確信しているので、どんな助けでも大歓迎です。また、これが比較的単純な修正であり、見落としていた場合もお詫び申し上げます。私はまだJava GUI(およびJava全般)に慣れていないので、すみません。