[英]java swing design to create a textfield
我想創建一個具有確定大小的jtext字段,但是當輸入增長時,我希望它像滾動窗格一樣擴展。 這是我到目前為止的內容:
JButton b,b1;
JLabel j1,j2,j3;
JTextField t1,t2;
public Window(){
super("frame");
//new Thread(this).start();
b=new JButton("Click");
j1=new JLabel("VALUE1");
t1=new JTextField(30);
j2=new JLabel("VALUE2");j3=new JLabel(" ");
t2=new JTextField(30);
j1.setBounds(100, 50, 150, 50);
t1.setBounds(150, 50, 200, 50);
j2.setBounds(200, 150, 250, 150);
t2.setBounds(250, 150, 200, 50);j3.setBounds(300, 150, 250, 150);
b.setBorder(new LineBorder(Color.black));
b.setBackground(Color.black);
b.setForeground(Color.white);
b1=new JButton("Exit");
super.setSize(300,300);
super.setLocation(250,150);
super.setLayout(new FlowLayout());
super.setVisible(true);
add(j1);add(t1);add(j2);add(t2); add(j3);
add(b);add(b1);
b.addActionListener(this);
b1.addActionListener(this);
如果您不想使用JScrollPane,那么您正在尋找-
我創建了一個示例程序來自動調整JTextField的大小,即,如果添加了文本,則其大小會增加,如果刪除了文本,則其大小會減小。
我使用了KeyListener的-keyTyped事件來檢測和更新文本字段的大小。 您也可以添加文檔偵聽器來執行相同的操作。
這是我的示例代碼-
import java.awt.Dimension;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class AutoResizeTest
{
public AutoResizeTest(){
JFrame frame = new JFrame("Auto-Resizable TextField");
frame.setLayout(null);
MyCustomTextField expandableText = new MyCustomTextField(20);
expandableText.setBounds(10, 10, 200, 30);
expandableText.setPreferredSize(new Dimension(200,30));
expandableText.setMaximumSize(new Dimension(600,30));
frame.add(expandableText);
frame.setBounds(100,100,700,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args)
{
AutoResizeTest test = new AutoResizeTest();
}
class MyCustomTextField extends javax.swing.JTextField{
private int originallimit;
int previousLength;
int length;
public MyCustomTextField(int limit){
previousLength=0;
originallimit = limit;
this.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
JTextField textField = (JTextField) e.getSource();
length = textField.getText().length();
if(length >= originallimit){
if(length > previousLength){
textField.setSize(new Dimension(textField.getWidth()+10, textField.getHeight()));
}
else{
if(length < previousLength)
textField.setSize(new Dimension(textField.getWidth()-10, textField.getHeight()));
}
previousLength = length;
}else{
textField.setSize(textField.getPreferredSize());
}
}
});
}
}
}
在這段代碼中,我使尺寸減小了10%。您可以輸入所需的值。
希望對您有幫助。
將設置JTextField的默認大小,並為JTextField提供ScrollPane ,這將在必要時使字段擴展。
Try the following
JTextField jtext = new JTextField(pane);
JScrollPane scroll = new JScrollPane(jtext);
將TextArea放在帶有BorderLayout的單獨的JPanel中 ,並放置在中間,當內容增加時,面板會自動展開。
textArea = new JTextArea(2, WIDTH);
textArea.setLineWrap(true);
textArea.getDocument().putProperty("filterNewlines", Boolean.TRUE);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.