1

JTextFieldpaint メソッドを上書きしてに数字を描画したいと考えています。ユーザーがテキスト フィールドを編集しても数字が消えないようにします。ただし、現時点では番号がまったく表示されないため、次のことを試しました。

public void paintComponent(Graphics g) {  
     super.paintComponent(g);
     if(number != 0){
            g.setColor(Color.RED);
            g.drawString(String.valueOf(number),0,0);
     }  
}  

どんなアイデアでも、これは可能ですか?

4

4 に答える 4

3

g.drawString(String.valueOf(number),0,0);通話中の Y 位置で遊んでみてください。使用例getHeight()/2

于 2012-04-23T13:55:05.627 に答える
2

..ユーザーがテキスト フィールドを編集しても、数字は消えません。

@mKorbel が指摘したようJTextFieldに、赤い数字を取得するために a をオーバーライドする必要はなく、パブリック メソッドを使用して設定するだけです。おと..

g.drawString(String.valueOf(number),0,0);

これが本当に数値に関するものである場合、おそらく最善の方法は、 を とともに使用しJSpinnerSpinnerNumberModelカスタム を設定することSpinnerUIです。

于 2012-04-23T14:05:15.433 に答える
1

使用する代わりに、JTextFieldpaintComponent()をオーバーライドする理由はないかもしれません

  • JTextField.setBackground()

  • JTextField.setForeground()

  • JTextField.setFont()

  • JTextField.setHorizontalAlignment(javax.swing.SwingConstants.LEFT)

  • Html色付きのテキストや特別なフォーマットのテキストを配置することで、いくつかのハッキングが可能です

編集

多分この質問は

  • KeyEventsでのフィルタリングDocument / DocumentListener

また

  • JFormattedTextFieldNumber Formatter
于 2012-04-23T13:41:26.233 に答える
1

JLabelの前に小さなを追加してみませんJTextFieldか?にはJLabel番号を含めることができますが、編集できないため、ユーザーが で何を変更しても、常にそこに表示されますJTextField。を呼び出して、 をフォーマットしJLabelて赤色にすることもできますsetForeground(Color.RED);。これはもっと簡単な解決策でしょうか?

たとえば、これを行う代わりに...

JPanel panel = new JPanel(new BorderLayout());
JTextField textfield = new JTextField("Hello");
panel.add(textfield,BorderLayout.CENTER);

あなたはこのようなことをするかもしれません...

JPanel panel = new JPanel(new BorderLayout());

JTextField textfield = new JTextField("Hello");
panel.add(textfield,BorderLayout.CENTER);

JLabel label = new JLabel("1.");
label.setForeground(Color.RED);
panel.add(label,BorderLayout.WEST);

JLabelの左側に赤が追加さJTextFieldれます。 を使用BorderLayoutしているため、可能な限り最小になりますJPanelJLabel

于 2012-04-23T13:43:26.673 に答える