0

当我向这个 JFrame 添加几个 JButton 时,这些按钮会随着鼠标的移动而出现和消失……有点吓人。有任何想法吗?其他项目没有这个问题,因此我很确定它是我的代码......但它很简单,我不知道有什么问题!

完整代码:(我模糊了我的名字)

package explorerplus;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Toolkit;
import java.io.File;
import javax.swing.*;

public class ExplorerPlus {

//Declarations
Toolkit t = Toolkit.getDefaultToolkit();
 JFrame f = new JFrame();

public static void main(String[] args) {
   SwingUtilities.invokeLater(new Runnable() {
        public void run(){
            ExplorerPlus ep = new ExplorerPlus();
        }
    });
}
private ExplorerPlus(){
   // f.super("");
    f.setUndecorated(false);

    f.setSize(t.getScreenSize());
    f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
    Container c = null;
    c =new JScrollPane(c);
    f.setContentPane(c);
    f.setVisible(true);
    GoThrough(new File("C:/Users/*****/Pictures/"));
    f.repaint();
 }
  static int spc_count=-1;
  int curr_x = 10, curr_y = 10;
  void GoThrough(File aFile) {
spc_count++;
String spcs = "";
for (int i = 0; i < spc_count; i++)
  spcs += " ";
if(aFile.isFile()){
  System.out.println(spcs + "[FILE] " + aFile.getName());
  File file = aFile;
  String s = getExt(file) + ".png";
  JButton b = new JButton(new ImageIcon(s));
  b.setToolTipText(file.getName());
  b.setSize(256, 256);
  b.setLocation(curr_x, curr_y);
  b.setVisible(true);
  b.validate();
  f.validate();

  if(curr_x < f.getWidth() - 270){
      curr_x+=270;
  }else{
  curr_y+=270;
  curr_x = 10;
  }
  f.getContentPane().add(b);


}
else if (aFile.isDirectory()) {
  System.out.println(spcs + "[DIR] " + aFile.getName());
  File[] listOfFiles = aFile.listFiles();
  if(listOfFiles!=null) {
    for (int i = 0; i < listOfFiles.length; i++)
      GoThrough(listOfFiles[i]);
  } else {
    System.out.println(spcs + " [ACCESS DENIED]");
  }
}
spc_count--;
}

  String getExt(File f){

 if(f.getName().toLowerCase().endsWith(".jpg")|| f.getName().toLowerCase().endsWith(".jpeg")){
     return "jpeg";
 } else if(f.getName().toLowerCase().endsWith(".png")){
     return "png";
 }
 else if(f.getName().toLowerCase().endsWith(".html")){
     return "html";
 }else if(f.getName().toLowerCase().endsWith(".ini")){
     return "ini";
 }else{
     return "text";
 }
  }
  String AllButExt(File f){
      String name = f.getName();
      return name.replace(getExt(f), "");
  }
}
4

1 回答 1

0

我希望我没有理解你的意思:你想在你的 JFrame 上显示一个新的 JButton。但它没有出现。

如果是这样,您可以尝试使用:

f.updateUI();

将按钮添加到框架后。

于 2012-07-03T08:56:13.137 回答