【发布时间】:2013-06-24 20:51:43
【问题描述】:
我正在编写一个简单的应用程序,一个方程系统求解器。 它背后的基本思想是从用户那里获取系统中的变量数量,然后动态创建那么多JTextFields,然后一个按钮,来解决系统问题。
为了实现它,我正在努力设置垂直滚动条。
发生的情况是,使用 JScrollPane 后布局变得一团糟。
我以this 为指导并尝试以这种方式使用 VERTICAL_ALWAYS 和 HORIZONTAL_NEVER,但它不起作用。
控件横向放置,而不是一个接一个地从上到下。
如何做到这一点?
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
}
}
【问题讨论】:
-
通常,对于这种问题,您最好插入代码(不是所有,而是您遇到问题的特定代码)。请参阅SSCCE 和此question checklist。
-
很抱歉给您带来不便。帖子已编辑。
-
试试
panel.setPreferredSize(new Dimension(800, 600)); -
值 800 和 600 不合适,但方法是完美的文件 :) 非常感谢您的帮助。 :)
-
我强烈反对@Azad 提供的解决方案是正确的方法。如果您要设置组件的大小或首选大小,这通常表明 GUI 很差、脆弱。
标签: java swing jframe scrollbar vertical-scrolling