1

私は単純なアプリケーション、方程式系ソルバーを書いています。その背後にある基本的な考え方は、ユーザーからシステム内の変数の数を取得し、その数の JTextField を動的に作成し、その後にボタンを配置して、システムを解決することです。

それを達成するための努力の中で、垂直スクロールバーを設定するのに苦労しています。

何が起こるかというと、JScrollPane が使用された後、レイアウトがすべて台無しになります。

これをガイドとして使用し、VERTICAL_ALWAYS AND HORIZONTAL_NEVER を使用してこの方法で実行しようとしましたが、うまくいきません。

コントロールは、上から下に 1 つずつではなく、横に配置されます。

これを達成する方法は?

public class SolverUserInterface implements ActionListener{

    private JFrame solverUI;
    private JPanel panel;
    private JLabel lbl[];
    private JTextField eq_Fields[];

    public SolverUserInterface(int Count) {
        // TODO Auto-generated constructor stub
        solverUI = new JFrame("Solver");
        solverUI.setSize(405, 137);
        solverUI.setResizable(false);
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
        solverUI.setLocation(dim.width/2-solverUI.getSize().width/2, dim.height/2-solverUI.getSize().height/2);
        solverUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        panel = new JPanel();
        panel.setLayout(new FlowLayout());
        lbl = new JLabel[Count];
        eq_Fields = new JTextField[Count];
        for(int i = 0; i < Count; i++){
            lbl[i] = new JLabel("Equation "+(i+1)+" : ");
            eq_Fields[i] = new JTextField(26);
            panel.add(lbl[i]);
            panel.add(eq_Fields[i]);
        }
        JButton btnSolve = new JButton("Solve Equations!");
        panel.add(btnSolve);
        btnSolve.addActionListener(this);    
                 /*This is the part concerned*/
        JScrollPane jp = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        solverUI.add(jp);    
        solverUI.revalidate();
    }

    public void ShowUserInterface(){
        solverUI.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub          
    }    
}
4

1 に答える 1