Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JScrollPane不';t使用本机操作系统滚动(Swing)_Java_Swing_Jscrollpane_Native - Fatal编程技术网

Java JScrollPane不';t使用本机操作系统滚动(Swing)

Java JScrollPane不';t使用本机操作系统滚动(Swing),java,swing,jscrollpane,native,Java,Swing,Jscrollpane,Native,我在Windows8.1操作系统上制作了一个小的JDialog,其中包含一个JScrollPane和一些其他组件。 问题是,滚动窗格的滚动有点奇怪。。。不是本机Windows 8.1滚动条: 我尝试使用外观和感觉功能作为休闲: try { UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e) { // H

我在Windows8.1操作系统上制作了一个小的
JDialog
,其中包含一个JScrollPane和一些其他组件。 问题是,滚动窗格的滚动有点奇怪。。。不是本机Windows 8.1滚动条:

我尝试使用
外观和感觉功能作为休闲:

    try {
        UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
    } catch (Exception e) {
        // Handle exception
    }
这根本没用

那么,我是不是用错了,或者有没有其他方法来使用本机操作系统的滚动条

此外,如果有人能解释如何定制卷轴(如箭头图片,或定制轨道和旋钮),我将不胜感激

编辑这是提到的JDialog的代码,说明iis存在问题:

package home;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.LookAndFeel;
import javax.swing.ScrollPaneLayout;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.JScrollPane;

import net.miginfocom.swing.MigLayout;

import javax.swing.JLabel;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Label;
import java.awt.Font;
import java.awt.List;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import java.awt.Button;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.WindowFocusListener;

import javax.swing.JRadioButton;
import javax.swing.JTextField;

public class ErrorDialog extends JDialog {
JDialog d = this;
Clip errorSoundClip = null;
/**
 * 
 */
private static final long serialVersionUID = -6060765607593894158L;

/**
 * Launch the application.
 */


/**
 * Create the dialog.
 */

public ErrorDialog(final JFrame parent,final String errors) {
    parent.setEnabled(false);
     try {
            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
        } catch (Exception e) {
            // Handle exception
        }
    addWindowFocusListener(new WindowFocusListener() {
        public void windowGainedFocus(WindowEvent e) {
        }
        public void windowLostFocus(WindowEvent e) {
            System.out.println("alert!!");
            d.requestFocus();
        }
    });
    setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    setAlwaysOnTop(true);
    addWindowListener(new WindowAdapter() {
        @Override
        public void windowOpened(WindowEvent e) {

            AudioInputStream audioInputStream = null;
            try {
                audioInputStream = AudioSystem.getAudioInputStream(new File("src\\home\\sounds\\Sad Trombone Sound Effect - Wah Wah Wah FAIL Sound - Fail Horns.wav").getAbsoluteFile());
            } catch (UnsupportedAudioFileException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            try {
                errorSoundClip = AudioSystem.getClip();
            } catch (LineUnavailableException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            try {
                errorSoundClip.open(audioInputStream);
            } catch (LineUnavailableException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            errorSoundClip.start();

        }
        @Override
        public void windowClosed(WindowEvent e) {
            parent.setEnabled(true);
            errorSoundClip.stop();
        }
    });
    setBounds(new Rectangle(0, 0, 480, 220));
    JScrollPane scrollPane = new JScrollPane();

    getContentPane().add(scrollPane, BorderLayout.CENTER);
    JPanel panel = new JPanel();
    panel.setPreferredSize(new Dimension(450, 150));
    panel.setAutoscrolls(true);
    scrollPane.setViewportView(panel);
    panel.setLayout(new MigLayout("", "[100.00%,grow]", "[][grow][43.93%][]"));
    Label label = new Label("The operation could have not beed completed. Reasons for failling:");
    label.setForeground(Color.RED);
    label.setFont(new Font("Dialog", Font.PLAIN, 15));
    panel.add(label, "cell 0 0,alignx center");



    List list = new List();
    panel.add(list, "cell 0 2,grow");

    JButton btnNewButton = new JButton("Close");
    btnNewButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            d.dispose();
        }
    });
    panel.add(btnNewButton, "cell 0 3,growx");
    list.add(errors);
}
}

你已经向我们展示了你的尝试,但不是当它被调用时。通常,您会在创建任何组件之前设置L&F,但我们无法仅通过这个小片段看到这一点。请发布一个演示问题的示例。Swing不使用本机控件,它模拟这些控件。您需要使用不同的UI库才能获得真正的本机控件。如果希望Swing应用程序看起来像本机应用程序,则需要使用系统外观,而不是跨平台外观<代码>UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
另外,对于定制,请参阅本文以了解总体思路:谢谢@a_horse_和_no_name!!它起作用了!谢谢你,我会留意的。