java Swing 中 面板刷新的问题。。求指教 。 高手在哪里啊。。。
javaswing中repaint()刷新面板的问题 求指教。。。代码如下:运行后点击按钮1,面板没刷新,需要缩放面板才能看到新的面板。我用计时器或...
java swing 中 repaint()刷新面板的问题 求指教。。。代码如下:运行后点击按钮1,面板没刷新,需要缩放面板才能看到新的面板。 我用计时器或则线程来调用repaint(),好像都没用,到底是怎么回事啊。。。import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Test extends JFrame implements ActionListener { MyThread thread = new MyThread(); JFrame frame; JPanel panel; Container containe; JPanel panel2; javax.swing.Timer time = new Timer(80,this); Test() { time.start(); frame = new JFrame(); containe = frame.getContentPane(); panel = new JPanel(); panel2 = new JPanel(); JButton button1 = new JButton("按钮1"); JButton button2 = new JButton("按钮2"); panel.setBackground(Color.BLACK); panel2.setBackground(Color.RED); button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { containe.removeAll(); containe.add(panel2); } }); button2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { containe.removeAll(); containe.add(panel); } }); panel.add(button1); panel2.add(button2); containe.add(panel); frame.setSize(800, 600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); thread.start(); frame.setVisible(true); } public static void main(String[] args) { new Test(); } class MyThread extends Thread { public void run() { containe.repaint(); } } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub repaint(); }}
展开
4个回答
展开全部
楼主好好看看 达到你目的了 哈哈哈 不需要那么多线程
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Test extends JFrame implements ActionListener {
JFrame frame;
JPanel panel;
JPanel containe;
JPanel panel2;
JButton button1 = null;
JButton button2 = null;
javax.swing.Timer time = new Timer(80, this);
Test() {
time.start();
frame = new JFrame();
containe = (JPanel) frame.getContentPane();
panel = new JPanel();
panel2 = new JPanel();
button1 = new JButton("按钮1");
button2 = new JButton("按钮2");
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
panel2.setBackground(Color.RED);
panel2.add(button2);
containe.removeAll();
containe.add(panel2);
containe.updateUI();
System.out.println("red");
}
});
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
panel.setBackground(Color.BLACK);
panel.add(button1);
containe.removeAll();
containe.add(panel);
containe.updateUI();//更改组件UI外观即可
System.out.println("balck");
}
});
panel.setBackground(Color.BLACK);
panel2.setBackground(Color.RED);
panel.add(button1);
panel2.add(button2);
containe.add(panel);
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) {
new Test();
}
public void actionPerformed(ActionEvent e) {
}
}
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Test extends JFrame implements ActionListener {
JFrame frame;
JPanel panel;
JPanel containe;
JPanel panel2;
JButton button1 = null;
JButton button2 = null;
javax.swing.Timer time = new Timer(80, this);
Test() {
time.start();
frame = new JFrame();
containe = (JPanel) frame.getContentPane();
panel = new JPanel();
panel2 = new JPanel();
button1 = new JButton("按钮1");
button2 = new JButton("按钮2");
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
panel2.setBackground(Color.RED);
panel2.add(button2);
containe.removeAll();
containe.add(panel2);
containe.updateUI();
System.out.println("red");
}
});
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
panel.setBackground(Color.BLACK);
panel.add(button1);
containe.removeAll();
containe.add(panel);
containe.updateUI();//更改组件UI外观即可
System.out.println("balck");
}
});
panel.setBackground(Color.BLACK);
panel2.setBackground(Color.RED);
panel.add(button1);
panel2.add(button2);
containe.add(panel);
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) {
new Test();
}
public void actionPerformed(ActionEvent e) {
}
}
展开全部
你好。
一般只是在最开始显示的时候才会有不出现的情况,需要进行拉伸等操作才会显示出来,之后应该是不会不显示的。
而且面板内的内容改变时,容器类组件需要显示刷新才会显示新面板,如果是控件类组件是不需要显示刷新就会即时改变的。
一般只是在最开始显示的时候才会有不出现的情况,需要进行拉伸等操作才会显示出来,之后应该是不会不显示的。
而且面板内的内容改变时,容器类组件需要显示刷新才会显示新面板,如果是控件类组件是不需要显示刷新就会即时改变的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哎呀,你的代码太乱了,我也没来信看啊 ,但是我知道可以用线程来刷新,就是我给你个简单的吧
class B implements Runnable {
public void run(){
while(true){
Date da = new Date();
System.out.println(da.toLocaleString());
try{
Thread.sleep(1000);
}catch(Exception e){}
}
}
}
public calss A {
public static void main(String[] args){
B b = new B();
Thread th = new Thread(b);
th.start();
}
}
每秒重新调用一次而已,不知道是不是你想要的刷新
class B implements Runnable {
public void run(){
while(true){
Date da = new Date();
System.out.println(da.toLocaleString());
try{
Thread.sleep(1000);
}catch(Exception e){}
}
}
}
public calss A {
public static void main(String[] args){
B b = new B();
Thread th = new Thread(b);
th.start();
}
}
每秒重新调用一次而已,不知道是不是你想要的刷新
参考资料: a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询