最近我需要編寫一個程序來繪製條形圖,當我按下準備好的地方時。有兩種情況會畫圖形,一個是按在桌子的地方,另一種是選擇的區域(如高雄或臺北)在typebox enter image description here面板中的圖形閃過然後消失
但我不知道爲什麼媒體的地方桌子非常清晰,可以在面板上繪製圖形,但是當我按下輸入框時,圖形就會閃爍。下面是我的一些代碼的一部分這個問題
public class Google2 extends JFrame implements ActionListener{
JPanel panel;//主要畫布
Graphics g;
int regnm=0,regns=0,regna=0,regn=0,regp=0;//生氣數量,傷心數量,憂慮數量,其他數量,正面數量
String[] stype = { "全部", "基隆", "臺北", "桃園", "新竹", "苗栗", "臺中", "南投", "彰化", "雲林", "嘉義"
, "臺南", "高雄", "屏東", "臺東", "花蓮", "宜蘭", "外島", "國外"};//所有地區
JComboBox typebox = new JComboBox(stype);//下拉式印出地區
DefaultTableModel tmc = new DefaultTableModel(new Object [][] {},new String [] { "Place","count"});//選地點用model
JTable jt =new JTable();
JScrollPane scrollPane = new JScrollPane(jt);//印出負面地點的滾輪
public Google2(){
setLocation(450,50);
setLayout(null);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(1300, 850);
typebox.setBounds(125,55,125,30);add(typebox);
typebox.addActionListener(this);
scrollPane.setBounds(10, 90, 250, 535);add(scrollPane);
jt.setModel(tmc);jt.setRowHeight(30);
jt.getSelectionModel().addListSelectionListener(//選地點
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
if(!event.getValueIsAdjusting()){
if(jt.getSelectedRow()>-1){
Draw();
}
}
}
});
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==typebox){
Draw();
}
}
void Draw(){
g.setColor(WHITE);
g.fillRect(0, 0, 379, 329);
g.setColor(BLACK);
float lineWidth = 6.0f;
((Graphics2D)g).setStroke(new BasicStroke(lineWidth));
g.drawRect(0, 0, 380, 330);
g.setFont(font1);
g.drawString("生氣", 30, 300);
g.drawString("傷心", 100, 300);
g.drawString("憂慮", 170, 300);
g.drawString("其他", 240, 300);
g.drawString("正面", 310, 300);
g.setColor(RED);
if(regnm>0){
int md=25;
md=md*regnm;
if(md>250)
md=250;
g.fillRect(35, 275-md, 35, md);
}
g.setColor(ORANGE);
if(regns>0){
int md=25;
md=md*regns;
if(md>250)
md=250;
g.fillRect(105, 275-md, 35, md);
}
g.setColor(Color.magenta);
if(regna>0){
int md=25;
md=md*regna;
if(md>250)
md=250;
g.fillRect(175, 275-md, 35, md);
}
g.setColor(Color.CYAN);
if(regn>0){
int md=25;
md=md*regn;
if(md>250)
md=250;
g.fillRect(245, 275-md, 35, md);
}
g.setColor(BLUE);
if(regp>0){
int md=25;
md=md*regp;
if(md>250)
md=250;
g.fillRect(315, 275-md, 35, md);
}
regnm=0;regns=0;regna=0;regn=0;regp=0;
}
//main function
public static void main(String[] args) throws Exception{
Google2 gg = new Google2();
}
}
我試過很多方法,如重繪,更新不能得到解決,仍有可能當我按下表,但無法繪圖時,我按下typebox 被繪製我希望有人能幫助我,謝謝