gpt4 book ai didi

java - JOptionPane.showInternalInput 对话框不可编辑

转载 作者:行者123 更新时间:2023-12-01 14:42:22 25 4
gpt4 key购买 nike

我正在编写一个 JDesktopPane 应用程序,在 JInternalFrame 中,我有一个打开网页的 JEditorPane(是的,我知道JEditorPane在网络上的蹩脚能力,别骂)。

我有办法让用户输入他们想要访问的页面,但是当我调用 JOptionPane.showInternalInputDialog(this, "What page would you like to access?") 文本字段不可编辑。我在 Java 6 和 Java 7 中都出现过这个问题。

编辑:这是我的类的构造函数

public Internet() {
super("Internet", true, true, true, true);
setSize(500, 400);
try {
pane = new JEditorPane(new URL("http://www.vetrustech.tk"));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
setContentPane(pane);
bar = new JMenuBar();
page = new JMenu("Page");
enterPage = new JMenuItem("Enter a page");
bar.add(page);
page.add(enterPage);

setJMenuBar(bar);

enterPage.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
loadPage();
}
});

这是加载页面的方法

private void loadPage() {
String s = JOptionPane.showInternalInputDialog(this,
"What page are you visiting?");
if (s == null) {
return;
}
if (s.equals("")) {
return;
}
try {
URL u = new URL(s);
pane.setPage(u);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

最佳答案

这就是同花 SSCCE 如此重要的原因......

这有效......

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Internet {

public static void main(String[] args) {
new Internet();
}

public Internet() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}

JDesktopPane dp = new JDesktopPane();
final JInternalFrame inf = new JInternalFrame("Help", true, true, true, true);
inf.setSize(200, 200);
inf.setVisible(true);
dp.add(inf);

JButton btn = new JButton("Click");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showInternalInputDialog(inf, "Hit me");
}
});
inf.add(btn);

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(dp);
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}

}

这表明您在代码中执行了我们没有看到的其他操作。

关于java - JOptionPane.showInternalInput 对话框不可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15825638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com