我试图向用户显示一些文字:
JTextField warningComponent = new JTextField(VERY_LONG_TEXT_NOENTERS);
warningComponent.setEditable(false);
但窗口大小会根据文字大小而改变。无论警告文本长度如何,我都希望将窗口设置为30 X 40。 我希望将警告文本调整为窗口大小(可能用户必须滚动才能看到结尾) 我该怎么做? 也许我应该使用其他摆动组件? 我在JTextField类中尝试了大多数方法。
感谢。
答案 0 :(得分:3)
我将它添加到JPanel
然后,默认布局管理器应该是FlowLayout,它将遵循文本字段的首选大小。
要为您需要执行的文本字段的首选大小提供建议:
JTextField warningComponent = new JTextField(VERY_LONG_TEXT_NOENTERS, 20);
第二个参数将提供有关如何调整文本字段大小以使一次可见约20个字符的建议。然后,您需要使用箭头键查看剩余的字符。
答案 1 :(得分:2)
我希望将警告文本调整为窗口大小
如果您希望文本字段根据框架大小调整大小而不是文本字段尺寸后的框架大小,您可以使用特定的布局来实现:
使用BorderLayout:
class MainPanel extends JPanel{
private JTextField txt;
public MainPanel(){
setLayout(new BorderLayout());
setPreferredSize(new Dimension(30, 40));
txt = new JTextField();
txt.setHorizontalAlignment(JTextField.HORIZONTAL);
add(txt);
}
}
要运行代码的Runner类:
class TextFieldRunner{
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
JFrame frame = new JFrame("Text Runner");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new MainPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
答案 2 :(得分:0)
您可以在应用中尝试JScrollPane
,JScrollPane
可以根据需要水平和垂直滚动。并将JTextArea
添加到JScrollPane
。 JTextField
无法滚动。
这是一个小例子:
JScrollPane scrollPane = new JScrollPane();
JTextArea textArea = new JTextArea();
scrollPane.add(textArea);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
这是滚动策略的值:
VERTICAL_SCROLLBAR_AS_NEEDED
VERTICAL_SCROLLBAR_NEVER
VERTICAL_SCROLLBAR_ALWAYS
HORIZONTAL_SCROLLBAR_AS_NEEDED
HORIZONTAL_SCROLLBAR_NEVER
HORIZONTAL_SCROLLBAR_ALWAYS