2011-12-22 3 views
0

Я использую следующий код для изменения свойств JTextField. Он работал правильно. Моя проблема заключается в том, как изменить свойства JTextField, передав параметры без использования функций по умолчанию. Например, если я хочу изменить свойство LEFT JTextField, используйте параметр (control name, left, 100), как это. Как изменить свойство JTextField, передав параметры в свойство JTextField, используя следующий код?Изменение свойства JTextfield с использованием Java Swing

package textfield; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 


public class textf implements ActionListener 
{ 
    JTextField txt; 
    JButton width; 
    JFrame frame; 
    JPanel panel; 
    //Font font = UIManager.getFont("txt.font"); 
    public textf() 
    { 
     frame=new JFrame(); 
     panel=new JPanel(); 
     txt=new JTextField(10); 
     width=new JButton("width"); 
     width.setBounds(20, 200, 50, 40); 

    panel.add(txt); 
    panel.add(width); 
    width.addActionListener(this); 
    frame.add(panel); 



     // n.getContentPane().add(new textf()); 
     frame.setSize(440,310); 
     frame.setVisible(true); 

    } 
    public void actionPerformed(ActionEvent e) 
    { 
    txt.setBorder(BorderFactory.createLineBorder(Color.red)); 
    txt.setHorizontalAlignment(javax.swing.JTextField.LEFT); 
    txt.setSize(100,100); 
     txt.setPreferredSize(new Dimension(1000, 90)); 

     txt.putClientProperty("txt.sizeVariant", "small"); 

     txt.setFont(new Font("Comic Sans",Font.ITALIC,20)); 
     txt.setForeground(Color.BLUE); 
     txt.setHorizontalAlignment(JTextField.RIGHT); 
    } 
    public static void main(String[] args) 
    { 
     new textf(); 

    } 


} 
+1

пожалуйста узнать соглашения об именах Java и прилипают к ним – kleopatra

+1

Либо я не понял ваш вопрос, или ответ уже существует: используйте setHorizontalAlignment(). – Jonathan

ответ

0

Я предполагаю, что вы хотите, чтобы установить положение JTextField (если нет, пожалуйста, объясните, что вы имеете в виду свойства «левый»)

tf.setBounds(LEFT,tf.getY(),tf.getWidth(),tf.getHeight()); 
+1

(независимо от реального вопроса, -1 для ответа;) - никогда не выполняйте ручное позиционирование/размер, это задача LayoutManager – kleopatra

+1

@kleopatra Я категорически не согласен. Если на панели больше нескольких элементов, вы правы. Но если вам просто нужно организовать два элемента известных свойств, нет необходимости или использовать служебные данные LayoutManager. Также есть много применений для ручного позиционирования в графических интерактивных программах (например, в играх), где вы не используете и не можете правильно использовать LayoutManager. –

+0

естественно, каждый свободен тратить свое время на борьбу с каркасом вместо того, чтобы использовать его в соответствии с его конструкцией ;-) – kleopatra

Смежные вопросы