我尝试开发一个正在读取目录的应用程序,并为该目录中的每个地图添加一个按钮=步骤1.在步骤2中,用户点击按钮以显示该地图中的所有文档。这些(仅PDF)文档也显示为按钮,如果用户点击按钮,PDF将在查看器中打开。
我定义了两个类,依此类推。但现在我的布局有问题。步骤1中的按钮位于一帧中,而步骤2中的按钮位于另一帧中。我想有一个框架,所以在左侧是步骤1的动态按钮,在右侧我想要步骤2的按钮,或者按钮PDf也可以显示为tumblnail。如果我点击左侧的按钮,右侧将会更新。
有人可以帮助我吗?
package infopad;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.io.File;
public class infopadUI extends JFrame implements ActionListener {
public infopadUI() {
File directory = null;
//Öffne Hauptverzeichnis
directory = new File("c:/Produktordner");
int numberfiles = 0;
// Inhalt von directory
File[] files = directory.listFiles();
//Number of Products in directory
numberfiles = files.length;
setSize(600, 600);
setLocationRelativeTo(null);
setLayout(new GridLayout(5, 6));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 1; i < numberfiles; i++) {
//Name für Button aus Verzeichnisliste holen
File file = files[i];
JButton button = new JButton(file.getName());
button.setActionCommand(file.getName());
button.addActionListener(this);
add(button);
}
}
public static void main(String[] args) {
new infopadUI().setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String productnumber = e.getActionCommand();
product p1 = new product(productnumber);
}
}
package infopad;
import java.awt.Desktop;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.io.File;
public class product extends JFrame implements ActionListener{
public product(String productnumber)
{
String map;
String doc;
map = ("c:/Produktordner/")+productnumber;
File directory = null;
//Öffne Hauptverzeichnis
directory = new File(map);
int numberfiles = 0;
// Inhalt von directory
File[] files = directory.listFiles();
//Number of Products in directory
numberfiles = files.length;
setSize(600, 600);
setLocationRelativeTo(null);
setLayout(new GridLayout(5, 6));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 1; i < numberfiles; i++) {
//Name für Button aus Verzeichnisliste holen
File file = files[i];
JButton button = new JButton(file.getName());
doc = map+"/"+file.getName();
button.setActionCommand(doc);
button.addActionListener(this);
add(button);
}
setVisible(true);
}
public static void main(String[] args) {
}
public void actionPerformed(ActionEvent ae) {
String doc = ae.getActionCommand();
try {
Desktop.getDesktop().open(new File(doc));
} catch (Exception e) {}
}
}
答案 0 :(得分:0)
您可以在构造函数中将this
实例从InfoPadUI
传递到Product
:而不是new infopadUI()....
执行new infopadUI(this)....
并在infopadUI中更改构造函数以接受JFrame
,并使用JFrame
按钮。 (摆脱infopadUI中的JFrame)