import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class TheSize extends JFrame implements ActionListener, KeyListener {
static String inText="";
JPanel pane=new JPanel();
JLabel word0=new JLabel("I would like my grid to be 2^",JLabel.RIGHT);
JLabel word1=new JLabel("* 2^ "+inText,JLabel.RIGHT);
JButton finish=new JButton("I'm done");
JTextField size=new JTextField("",3);
public TheSize(){
super("size");
System.out.println("hi");
setLookAndFeel();
setSize(550,100);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
FlowLayout box=new FlowLayout();
setLayout(box);
pane.add(word0);
pane.add(size);
pane.add(word1);
pane.add(finish);
finish.addActionListener(this);
add(pane);
setVisible(true);
pack();
size. addKeyListener(this);
setFocusable(true);
}
private void setLookAndFeel() {
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
);
} catch (Exception exc) {
// ignore error
}
}
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyPressed(KeyEvent arg0) {
}
@Override
public void keyReleased(KeyEvent arg0) {
}
@Override
public void keyTyped(KeyEvent e) {
inText=size.getText();
pane.revalidate();
pane.repaint();
}
public static void main(String[] args){
new TheSize();
}
}
幾件事情JFrame.repaint()和JFrame.revalidate()不工作
我確定的KeyListener工作,並且它不工作在沒有輸出,它沒」不要給我任何錯誤。
應該發生什麼:
應該彈出它說,我想我的網格爲2^__(用戶輸入文本字段)的框架____ * 2 ^(什麼是在文本框)。 (按鈕爲我完成)。
然而,(什麼是在文本字段)後,我輸入一些東西到文本字段保留爲空。我檢查了程序是否使用System.out.println();
聽到了我的按鍵,並且它正在工作,所以revalidate();
和repaint()
命令一定不是(我也通過在我的構造函數中放置了一個System.out.println()來測試它;在此先感謝
是的,我的意思是revalidate(),我只是改變了它。我修復了一下程序,回想一下構造函數中的JTextField「size」,但它仍然不起作用。我想像revalidate()重新構造像repaint()重新運行paint()或paintComponent()?順便說一下,我在「changedUpdate」中留下了一個System.out.println(「hi」),爲什麼每次我在TextField中輸入某些內容時都不打印它,因爲它應該在TextField中分離一個chagne;否則,我想的KeyListener實際上可能比的DocumentListener更好地工作。 –
順便說一句,我不知道如果我說得很清楚,但我試圖讓我的TextField對chagne第二用戶開始輸入的文本字段或chagne它。 –
@ user3618683:是的,我知道你在做什麼,再次請讓我絕對清楚 - 一個KeyListener是**不是**的方式來做到這一點。再次,使用一個DocumentListener,正如我上面已經演示的那樣。你說,''我認爲KeyListener實際上可能比DocumentListener工作得更好 - 「不要粗魯,但我已經在Swing很長時間了,當你開始在文本組件上擺弄KeyListeners時,你冒險搞砸了文本組件本身的功能。嚴重的是,避免在大多數情況下使用它們。 –