從 JFrame 呼叫時,我在顯示 JDialog 時遇到問題。JFrame 只包含一個按鈕。按下時,將啟動一個帶有 JLabel、JTextField 和 JButton 的 JDialog。
JFrame 顯示正常。JDialog 顯示奇怪,有點像它試圖多次繪制它(或它的元素)偏移!當您將滑鼠移動到不同的組件上時,它會不斷重繪 ,但仍然很奇怪。只要您使用滑鼠調整 JDialog 的大小,它就會正常運行(無論您是否增加/減少大小)。
這是它第一次出現的方式:

稍微調整一下大小后,就可以正確繪制了:

請問我哪里錯了?
import java.awt.EventQueue;
import java.awt.event.*;
import javax.swing.*;
public class Demo extends JFrame implements Runnable {
public static void main(String[] args) {
EventQueue.invokeLater(new Demo());
}
public void run() {
setTitle("My JFrame");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton btn = new JButton("Launch JDialog");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new Dlg();
}
});
add(btn);
pack();
setVisible(true);
}
}
class Dlg extends JDialog {
public Dlg() {
setTitle("My JDialog");
JPanel pnl = new JPanel();
pnl.setLayout(new BoxLayout(pnl, BoxLayout.X_AXIS));
JLabel lbl1 = new JLabel("Label 1");
JTextField txt1 = new JTextField(5);
JButton btn1 = new JButton("Button 1");
pnl.add(lbl1);
pnl.add(txt1);
pnl.add(btn1);
add(pnl);
pack();
setVisible(true);
}
}
編輯
這是在帶有 JDK 17.0.2 的 Windows 10 上
uj5u.com熱心網友回復:
我在 Apache NetBeans Bugzilla 中發現了一個類似的問題。“everflux”的評論 7描述了設定 JVM 引數:
我認為這是由于 Java 8 默認啟用了 xrender 擴展。我在 Nvidia 機器上使用 Netbeans 8/Java 8 時遇到嚴重的圖形問題、閃爍、視窗僅部分滾動等。
我在 netbeans 啟動選項中添加了以下標志:-J-Dsun.java2d.opengl=true
至少在 10 分鐘的測驗期間,這似乎緩解了這些問題。我鼓勵其他遇到圖形問題的用戶對其進行測驗并報告他們的結果。
-Dsun.java2d.opengl=true在命令列或 Eclipse 中添加作為運行配置中的 VM 引數已為我修復了它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429904.html
