Java 我怎样才能使这个窗格按我想要的方式显示?

Java 我怎样才能使这个窗格按我想要的方式显示?,java,swing,jeditorpane,jscrollbar,Java,Swing,Jeditorpane,Jscrollbar,它开始显示如下: 然后,正如预期的那样,当您用超出底部限制的文本填充它时,它看起来如下所示: 但是文本有点偏了,这肯定与它激活的水平滚动条有关,但它看起来真的很奇怪。那么,我如何才能禁用水平滚动条,并使文本显示干净,而不会向右拖一点 JEditorPane editorPane = new JEditorPane(); scrollPane.setViewportView(editorPane); editorPane.setLineWrap(true); editorPa

它开始显示如下:

然后,正如预期的那样,当您用超出底部限制的文本填充它时,它看起来如下所示:

但是文本有点偏了,这肯定与它激活的水平滚动条有关,但它看起来真的很奇怪。那么,我如何才能禁用水平滚动条,并使文本显示干净,而不会向右拖一点

JEditorPane editorPane = new JEditorPane();
    scrollPane.setViewportView(editorPane);
    editorPane.setLineWrap(true);
editorPane.setLineWrap(真);不起作用,它说“类型JEditorPane的setLineWrap(boolean)方法未定义”,如果有办法在JTextArea中使用HTML,请告诉我;但我认为这行不通。我需要能够添加HTML以后

完整代码:

import java.awt.EventQueue;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class MainGUI {

private JFrame frame;
private JTextField textField;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                MainGUI window = new MainGUI();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public MainGUI() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
//  frame.setLocationRelativeTo(null);
    frame.setBounds(500, 200, /*W*/600, /*H*/435);
//  frame.setSize(/*W*/600, /*H*/435);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(10, 11, 564, 337);
    frame.getContentPane().add(scrollPane);

    JEditorPane editorPane = new JEditorPane();
    scrollPane.setViewportView(editorPane);

    textField = new JTextField();
    textField.setBounds(10, 365, 564, 20);
    frame.getContentPane().add(textField);
    textField.setColumns(10);
}

}

如果编辑器窗格包含HTML,则当它达到最大宽度时,自然会进行换行。诀窍是告诉滚动窗格不要显示水平滚动条,因此它建议视图组件将大小限制为视图给定的任何宽度(非常好)

例如(实际的MCVE)

import java.awt.*;
导入javax.swing.*;
公共类MainGUI{
私有JFrame;
私有JTextField textField;
私有字符串[]loremIpsum={
“Lorem ipsum door sit amet,concertetur adivising elit.Integer ut nulla egestas arcu rhoncus molectie.Mauris eget consequat sem,acumsan eros.preasent sem massa,dignessim sit amet porta ut,interdum sit amet ligula.pellentsque cursus odio vel vel avulpute.Donec facilisis exed ed pellentsques pellet laoret.preasent it it it it it id electus su普尔维纳尔(scipit pulvinar)、莫里斯(Mauris a eros dui)、乌拉尔(Nulla ultrices)和乌拉尔(lacinia sagittis)、维拉姆(Vivamus ac)坐在乌拉尔(amet dolor ultrices euismod)、马蒂斯(ante id mattis)、库拉比(Curabitur)调味品上。非乌拉尔(Pullentis)直径、乌拉尔(Nullas dapibus)、乌拉尔(Nullas Lactis)和乌拉尔(Nullas Sagitis turpis)、euismod(vitae eleifend)和(Euism利维纳,时间和弧度。大师和灵魂。在大的生命中,坐着一个设备。”,
“莫比·维塔姆·埃尼姆的名言,是精英的代言人。纳姆·维塔姆·阿库姆森·利奥,德·朗库斯·托托。普雷森特·迈格纳的名言,乌尔塔·维塔姆·维塔姆·维塔姆·维塔姆·维塔姆·维塔姆·埃尼姆的名言,是精英的代言人。二人权杖,智者——欧盟浮世风,中间的莱克斯·迪亚姆的莱克斯,是我们的兽人。一个时代的领袖。”。在我的名言中,非孕期缺陷。整数neque mauris、eu ultrices quis、pellentesque nunc、Donec egestas tristique dolor、ac sagittis ante elementum non。”,
“毛里斯坐在阿梅特·乌兰科佩尔的位子上。努克无调味品奥古斯。万岁和奥迪奥·埃吉特·马萨的胜利来自于拉库斯。多恩·多洛,设施坐在阿梅特·维尼纳提斯的位子上,支持着尼西。拉齐亚·奥奇·奥古斯特发酵的生命。努尔·多尔,维塔·奥古斯特的设施,封建和奥古斯。努克·康格,莱克托·拉齐亚·奥古斯拉齐尼亚,最自由的旋涡,最自由的旋涡,最自由的旋涡,最自由的旋涡,最自由的旋涡,最自由的旋涡,最自由的旋涡,最自由的旋涡,最自由的旋涡,最自由的旋涡,最自由的旋涡,最自由的旋涡,最自由的旋涡,最自由的旋涡,最自由的旋涡nibh前庭laoreet。”,
“Morbi tincidunt eleifend nisl.Nullam libero massa,imperdiet Vita egestas eu,sodales ac lacus.Donec eu commodo dui.Suspendisse Potentis.faucibus orci luctus and ultrices Posuer cubilia Curae中的前庭和同侧前庭;Aenean vel diam volpat,gradida quam vitae,tristique dui.Cras aliquet gradida Mass Obsa Egest Lobertis.Donec ullamcorper eu purus eget iaculis.Ut id leo erat.ETIACULIS ante eu mi molestie SUSSCIPIT.”,
“我是你的朋友,我是你的朋友,我是你的朋友,我是你的朋友,我是你的朋友,我是你的朋友,我是你的朋友,我是你的朋友,我是你的朋友,我是你的朋友。”Maecenas ut ante non-arcu molestie Gradida nec eu neque.Vivamus elit nisi,luctus eget的拍卖人,accumsan id dolor。”
};
/**
*启动应用程序。
*/
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
试一试{
MainGUI窗口=新的MainGUI();
window.frame.setVisible(true);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
/**
*创建应用程序。
*/
公共MainGUI(){
初始化();
}
/**
*初始化框架的内容。
*/
私有void初始化(){
frame=newjframe(“编辑器窗格中的HTML”);
frame.setLocationByPlatform(真);
//frame.setBounds(500200,/*W*/600,/*H*/435);这是猜测!
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
StringBuilder sb=新的StringBuilder(
"");
for(字符串s:loremIpsum){
sb.追加(“”);
某人追加;
}
JEditorPane editorPane=新的JEditorPane();
setContentType(“text/html”);
editorPane.setText(sb.toString());
JScrollPane scrollPane=新的JScrollPane(
伊迪托潘,
JScrollPane.VERTICAL\u滚动条\u始终,
//这是一条重要的路线!
JScrollPane.HORIZONTAL\u SCROLLBAR\u NEVER);
editorPane.setCaretPosition(0);
frame.getContentPane().add(滚动窗格);
frame.pack();
//它应该是显示内容所需的正确大小,
//但是现在让我们把它改成一半的高度。
维度d=frame.getSize();
d=新尺寸(d.宽度,d.高度/2);
F
import java.awt.*;
import javax.swing.*;

public class MainGUI {

    private JFrame frame;
    private JTextField textField;
    private String[] loremIpsum = {
        "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer ut nulla egestas arcu rhoncus molestie. Mauris eget consequat sem, a accumsan eros. Praesent sem massa, dignissim sit amet porta ut, interdum sit amet ligula. Pellentesque cursus odio vel vestibulum vulputate. Donec facilisis ex sed pellentesque laoreet. Praesent ut sem id lectus suscipit pulvinar. Mauris a eros dui. Nulla ultrices est eu lacinia sagittis. Vivamus ac erat sit amet dolor ultricies euismod. Curabitur condimentum in ante id mattis. Pellentesque non sagittis diam. Nulla dapibus lacus sagittis turpis vehicula, vitae eleifend odio euismod. Sed elementum facilisis nisl. Donec lectus nulla, rutrum ac sollicitudin pulvinar, tempus ut arcu. Maecenas ut vulputate purus. In luctus cursus magna sit amet facilisis.",
        "Morbi vitae dictum enim, quis porttitor elit. Nam quis accumsan leo, id rhoncus tortor. Praesent tellus magna, ultrices quis nulla vel, fringilla ultricies purus. In hendrerit volutpat elit a posuere. Duis scelerisque, sapien eu faucibus eleifend, lectus lacus interdum diam, sed bibendum orci est ut urna. Quisque a sem iaculis ex aliquam tempor. In id dictum ex, non gravida lacus. Integer neque mauris, tristique eu ultrices quis, tristique pellentesque nunc. Donec egestas tristique dolor, ac sagittis ante elementum non.",
        "Mauris sit amet ullamcorper erat. Nunc non condimentum augue. Vivamus et odio eget massa convallis vulputate nec ut lacus. Donec sapien dolor, facilisis sit amet venenatis sit amet, suscipit ut nisi. Praesent vitae lorem lacinia orci volutpat fermentum. Nullam dolor erat, facilisis vitae volutpat id, feugiat et augue. Nunc congue, lectus a vehicula lacinia, est libero volutpat quam, nec maximus ante mauris eu urna. Etiam nunc dolor, auctor et orci vitae, pulvinar pretium orci. Nam et est rhoncus, pharetra mauris id, condimentum leo. In fermentum non urna sed imperdiet. Cras sit amet nulla eget purus convallis accumsan. Donec dictum eget magna pulvinar scelerisque. Fusce efficitur nisl sed nibh vestibulum laoreet.",
        "Morbi tincidunt eleifend nisl. Nullam libero massa, imperdiet vitae egestas eu, sodales ac lacus. Donec eu commodo dui. Suspendisse potenti. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean vel diam volutpat, gravida quam vitae, tristique dui. Cras aliquet gravida massa eget lobortis. Donec ullamcorper eu purus eget iaculis. Ut id leo erat. Etiam iaculis ante eu mi molestie suscipit.",
        "Quisque dapibus consectetur mauris eu faucibus. Etiam ac varius odio. Nulla non elit velit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus est leo, ultricies quis sem ut, euismod vestibulum augue. Donec auctor eu nisi a aliquam. Integer libero sapien, fringilla ac posuere ut, malesuada ut leo. Maecenas ut ante non arcu molestie gravida nec eu neque. Vivamus elit nisi, auctor at luctus eget, accumsan id dolor."
    };

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MainGUI window = new MainGUI();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public MainGUI() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame("HTML in editor pane");
        frame.setLocationByPlatform(true);
        //frame.setBounds(500, 200, /*W*/ 600, /*H*/ 435); this is guessing!
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        StringBuilder sb = new StringBuilder(
                "<html><body style='width: 400px;'>");
        for (String s : loremIpsum) {
            sb.append("<p>");
            sb.append(s);
        }
        JEditorPane editorPane = new JEditorPane();
        editorPane.setContentType("text/html");
        editorPane.setText(sb.toString());
        JScrollPane scrollPane = new JScrollPane(
                editorPane, 
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
                // this is an important line!
                JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
        editorPane.setCaretPosition(0);
        frame.getContentPane().add(scrollPane);
        frame.pack();
        // it should be the correct size needed to display the content,
        // but now let's make it half that height.
        Dimension d = frame.getSize();
        d = new Dimension(d.width, d.height/2);
        frame.setSize(d);
    }
}