Я сделал несколько меню, и он должен обновить переменные conmonon (для текста на сетке), тогда диалоговое окно вне фокуса должно перерисовать сетку. Вот скриншот:Как перерисовать диалоговое окно фокуса без фокуса?
Главная панель управления всегда в верхнем положении и «Отображение данных» панель всегда сидит за ним. При нажатии кнопки на передней панели Data Display должен обновить свою сетку. В настоящее время общая переменная 0.4 на сетке обновляется путем добавления слушателя и работает нормально. Но сама сетка больше не перекрашивается. Как перерисовать диалоговое окно вне фокуса в режиме реального времени?
Вот код на передней панели:
public class MainDisplayForm extends javax.swing.JFrame {
Storage st = new Storage();
DisplayForm dF = new DisplayForm();
....
public MainDisplayForm() {
initComponents();
Btn_IncreaseGain.addActionListener(new ButtonListener_IncreaseGain());
}
....
} //MainDisplayForm ends here.
class ButtonListener_IncreaseGain implements ActionListener {
DisplayForm dF = new DisplayForm();
Storage st = new Storage();
ButtonListener_IncreaseGain()
{
}
public void actionPerformed(ActionEvent e) {
st.iGain = 20;
dF.revalidate();
dF.repaint();
System.out.println("Testing");
}
}//Listener ends here.
Вот код отображения данных:
public void paint(Graphics g)
{
g2 = (Graphics2D) g;
paintComponents(g2);
//added numbers are for adjustment.
int x = this.jPanel1.getX()+8;
int y = this.jPanel1.getY()+30;
int width = this.jPanel1.getWidth()+19;
int height = this.jPanel1.getHeight()+40;
//labelling voltages
label0.setText(st.zero);
label1.setText(st.v1);
label2.setText(st.v2);
label3.setText(st.v3);
label4.setText(st.v4);
label5.setText(st.v3);
label6.setText(st.v4);
g2.setColor(Color.darkGray);
for(int i=x; i<width; i=i+80)
{
g2.drawLine(i, y, i, height);
}
int j = 0;
for(int i=y; i<height; i=i+80)
{
j++;
//st.iGain
g2.setColor(Color.orange);
if(j==1)
{
double k1 = st.iGain * 0.4;
st.v1 = Double.toString(k1);
g2.drawString(st.v1, x+5, y+10);
}
if(j==2)
{
double k2 = st.iGain * 0.3;
st.v2 = Double.toString(k2);
g2.drawString(st.v2, x+5, y+90);
}
g2.setColor(Color.DARK_GRAY);
g2.drawLine(x, i, width, i);
....
} //grid info is not completed yet.
Спасибо,
ли Вы проверить SwingWorker http://docs.oracle.com/javase/6/ docs/api/javax/swing/SwingWorker.html? – VirtualTroll
@Amine, спасибо за комментарий. Я попробую. – user1098761
См. ** изменить 1 ** на мой ответ ниже. Я * думаю * Я вижу, где твоя проблема. –