Недавно мне нужно было написать программу для рисования гистограммы, когда я нажимаю подготовленное место. Есть две ситуации будет рисовать графики, один прессовой место в таблице, другой выбор региона (например, Гаосюн или Тайбэй) в 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 Я надеюсь, что кто-то может мне помочь, спасибо