2013-05-25 3 views
1

Я хочу, чтобы текстовое поле не запускалось из графического интерфейса или не печатало текстовое поле на новой «линии».Как остановить JTextFields от запуска кадра

Вот код:

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

public class Window extends JFrame { 
    private JTextField TextField0; 
    private JTextField TextField1; 
    private JCheckBox CheckBox0; 
    private JPanel panel; 

    //CONSTRUCTOR 
    public Window() { 
     super("Checkbox"); 
     setLayout(new FlowLayout()); 

     panel = new JPanel(); 
     add(panel, BorderLayout.CENTER); 

     TextField0 = new JTextField("Add field",15); 
     panel.add(TextField0); 
     TextField1 = new JTextField("Add field", 15); 

     CheckBox0 = new JCheckBox(""); 

     HandlerClass handler = new HandlerClass(); 
     TextField0.addActionListener(handler); 
    } 

    public class HandlerClass implements ActionListener { 
     public void actionPerformed(ActionEvent event) { 
      if(event.getSource()==TextField0) { 
       CheckBox0.setText(String.format("%s",event.getActionCommand())); 
       panel.remove(TextField0); 
       panel.add(CheckBox0); 
       panel.add(TextField1); 
       panel.revalidate(); 
       panel.repaint(); 
      } 
     } 
    } 
} 
+1

имена переменных не должен начинаться с прописными буквами !!! – camickr

ответ

0

Установите расположение панели в BoxLayout вместо BorderLayout. Смотрите следующую ссылку для различных макетов и как использовать их:

http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

+0

Я не уверен, что вижу разницу между BorderLayout или BoxLayout для одного компонента – MadProgrammer

+0

TextField0, TextField1 – 7stud

+0

А, хорошо, я вижу, что вы получаете – MadProgrammer

2

Там на самом деле не все, что вы можете сделать ...

JTextField позволит тексту переполнить видимую область текстового поля (обрезки текста на экране)

Вы можете попробовать использовать JTextArea, который поддерживает многострочный текст строки

Вы также можете попробовать упаковки т он обрамляет

enter image description here

import java.awt.EventQueue; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class TestTextField { 

    public static void main(String[] args) { 
     new TestTextField(); 
    } 

    public TestTextField() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       String text = "This is a long piece of text that seems to go on and on and on and on an on....and some more..."; 

       JTextField field = new JTextField(10); 
       JTextArea ta1 = new JTextArea(10, 2); 
       JTextArea ta2 = new JTextArea(10, 2); 

       field.setText(text); 
       ta1.setText(text); 
       ta2.setText(text); 

       configure(ta1); 
       configure(ta2); 

       JFrame frame = new JFrame("Test"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new GridBagLayout()); 
       GridBagConstraints gbc = new GridBagConstraints(); 
       gbc.gridwidth = GridBagConstraints.REMAINDER; 
       gbc.weightx = 1; 
       gbc.fill = GridBagConstraints.HORIZONTAL; 
       frame.add(field, gbc); 
       frame.add(ta1, gbc); 
       frame.add(new JScrollPane(ta2), gbc); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 

      protected void configure(JTextArea ta) { 
       ta.setWrapStyleWord(true); 
       ta.setLineWrap(true); 
      } 

     }); 
    }  
} 
Смежные вопросы