我本想写一个小程序,上面是一个文本框,在里面输入文本,下面能够及时地显示出来。代码如下:
///////////////////////////////////
import java.util.*;
import java.io.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;
import javax.swing.*;public class MyTextTest {
public static void main(String[] args) {
MyTextFrame frame = new MyTextFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); }
}class MyTextFrame extends JFrame{
public MyTextFrame(){
setTitle("My Text Test");
setSize(400,300);
MyTextPanel panel = new MyTextPanel();
add(panel);
}
}class MyTextPanel extends JPanel{
public MyTextPanel(){
setLayout(new BorderLayout());
top = new TopPanel();
bottom = new JPanel();
text = new JTextField(10);
text.getDocument().addDocumentListener(new DocumentListener(){
public void insertUpdate(DocumentEvent event) { top.repaint(); }
public void removeUpdate(DocumentEvent event) { top.repaint(); }
public void changedUpdate(DocumentEvent event) {}
}
);
bottom.add(text);
add(bottom,BorderLayout.NORTH);
add(top,BorderLayout.CENTER);
}
private class TopPanel extends JPanel{
protected void paintComponent(Graphics g){
g.drawString(text.getText().trim(),10,100);
}
}
private final JPanel top;
private JPanel bottom;
private final JTextField text;
}///////////////////////////////////////////////////////////////////////////
大家可以编译运行一下,虽然功能是实现了,但是却会出现三个文本框,不知道错在哪里,
还望大家指导。
///////////////////////////////////
import java.util.*;
import java.io.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;
import javax.swing.*;public class MyTextTest {
public static void main(String[] args) {
MyTextFrame frame = new MyTextFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); }
}class MyTextFrame extends JFrame{
public MyTextFrame(){
setTitle("My Text Test");
setSize(400,300);
MyTextPanel panel = new MyTextPanel();
add(panel);
}
}class MyTextPanel extends JPanel{
public MyTextPanel(){
setLayout(new BorderLayout());
top = new TopPanel();
bottom = new JPanel();
text = new JTextField(10);
text.getDocument().addDocumentListener(new DocumentListener(){
public void insertUpdate(DocumentEvent event) { top.repaint(); }
public void removeUpdate(DocumentEvent event) { top.repaint(); }
public void changedUpdate(DocumentEvent event) {}
}
);
bottom.add(text);
add(bottom,BorderLayout.NORTH);
add(top,BorderLayout.CENTER);
}
private class TopPanel extends JPanel{
protected void paintComponent(Graphics g){
g.drawString(text.getText().trim(),10,100);
}
}
private final JPanel top;
private JPanel bottom;
private final JTextField text;
}///////////////////////////////////////////////////////////////////////////
大家可以编译运行一下,虽然功能是实现了,但是却会出现三个文本框,不知道错在哪里,
还望大家指导。
public MyTextFrame(){
setTitle("My Text Test");
setSize(400,300);
MyTextPanel panel = new MyTextPanel();
getContentPane().add(panel); ////////////////////
}
}
应该是topPanel的问题
import java.util.*;
import java.io.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;
import javax.swing.*;public class MyTextTest {
public static void main(String[] args) {
MyTextFrame frame = new MyTextFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); }
}class MyTextFrame extends JFrame{
public MyTextFrame(){
setTitle("My Text Test");
setSize(400,300);
MyTextPanel panel = new MyTextPanel();
getContentPane().add(panel);
}
}class MyTextPanel extends JPanel{
private final JPanel top;
private JPanel bottom;
private final JTextField text;
public MyTextPanel(){
setLayout(new BorderLayout());
top = new TopPanel();
// bottom = new JPanel();
text = new JTextField(10);
text.getDocument().addDocumentListener(new DocumentListener(){
public void insertUpdate(DocumentEvent event) { top.repaint(); }
public void removeUpdate(DocumentEvent event) { top.repaint(); }
public void changedUpdate(DocumentEvent event) {}
}
);
top.add(text); add(top,BorderLayout.NORTH);
// add(bottom,BorderLayout.CENTER);
}
private class TopPanel extends JPanel{
protected void paintComponent(Graphics g){
g.drawString(text.getText().trim(),10,100);
}
}
}
import java.util.*;
import java.io.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;
import javax.swing.*;public class MyTextTest {
public static void main(String[] args) {
MyTextFrame frame = new MyTextFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); }
}class MyTextFrame extends JFrame{
public MyTextFrame(){
setTitle("My Text Test");
setSize(400,300);
MyTextPanel panel = new MyTextPanel();
add(panel);
}
}class MyTextPanel extends JPanel{
private final JTextField t1 =new JTextField(10),
t2 = new JTextField(10);
private JPanel bottom;
public MyTextPanel(){
setLayout(new BorderLayout());
bottom = new JPanel();
t1.getDocument().addDocumentListener(new DocumentListener(){
public void insertUpdate(DocumentEvent event) { t2.setText(t1.getText());}
public void removeUpdate(DocumentEvent event) { t2.setText(t1.getText()); }
public void changedUpdate(DocumentEvent event) {}
});
bottom.add(t1);
bottom.add(t2);
add(bottom,BorderLayout.NORTH);
}
}
=======================
top(文本框)
bottom
============
如果在top的文本框里输入任何东西,都会及时地显示在bottom上面,bottom上没有
任何的component。