【发布时间】:2014-01-04 11:14:28
【问题描述】:
实际上我是 java gui 的新手,在这里,每当我们在文本字段中输入内容并按下按钮时,我都想更改矩形高度,但我不知道该怎么做,实际上我签入了大量站点但我找不到简单的方法。实际上我找不到如何更改 MyPanel 类中的paintComponent 内的矩形大小。
(高度变化的逻辑是字符串中有多少元音大小写,辅音等)
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Hist{
int h1=0,h2=0,h3=0,h4=0,h5=0;
JFrame f=new JFrame();
JButton b=new JButton("click");
JTextField text=new JTextField(30);
public static void main(String args[]){
Hist h=new Hist();
}
Hist(){
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new FlowLayout());
f.add(new MyPanel(h1,h2,h3,h4,h5));
f.setSize(400,300);
f.setVisible(true);
f.add(b);
f.add(text);
thehandler handler=new thehandler();
b.addActionListener(handler);
}
class thehandler implements ActionListener{
public void actionPerformed(ActionEvent event){
if(event.getSource()==b){
h1=0;h2=0;h3=0;h4=0;h5=0;
String s;
s=text.getText();
char[] ar=s.toCharArray();
for(int i=0;i<s.length();i++){
if(ar[i]=='a'||ar[i]=='e'||ar[i]=='i'||ar[i]=='o'||ar[i]=='u'){
h1=h1+10;
}
else if(ar[i]=='A'||ar[i]=='E'||ar[i]=='I'||ar[i]=='O'||ar[i]=='U'){
h2=h2+10;
}
else{
h5=h5+10;
}
}
}
}
}
}
class MyPanel extends JPanel{
int x1,x2,x3,x4,x5;
public MyPanel(int a,int b,int c,int d,int e){
setBorder(BorderFactory.createLineBorder(Color.BLACK));
x1=a;x2=b;x3=c;x4=d;x5=e;
}
public Dimension getPreferredSize(){
return new Dimension(350,200);
}
public void paintComponent(Graphics g){
super.paintComponents(g);
g.setColor(Color.red);
g.fillRect(25, 25, 30,x1);
g.setColor(Color.red);
g.fillRect(75, 25, 30, x2);
g.setColor(Color.red);
g.fillRect(125, 25, 30,x3);
g.setColor(Color.red);
g.fillRect(175, 25, 30, x4);
g.setColor(Color.red);
g.fillRect(225, 25, 30, x5);
}
}
【问题讨论】:
-
开启
ActionEvent获取/设置新值并调用repaint()。 -
h1、h2.. 是否与x1、x2.. 属性相关联?我发现你的变量名令人困惑,因为它们的使用方式x属性被用作height前缀h!
标签: java swing user-interface graphics paint