Java 断开JPanel段周围的线

Java 断开JPanel段周围的线,java,swing,jframe,jpanel,border,Java,Swing,Jframe,Jpanel,Border,您好,我正在尝试添加一个边界或一个分隔线,将北段与JPanel的其余部分分开。基本上使用“设置边框”,我在整个窗口周围有一个边框,但需要一条线,从边框的一部分水平穿过到另一侧。当我向添加到BorderLayout.NORTH的JPanel添加边框时,它会将整个边框放在节内。不是本节的大纲。希望你明白我的意思 附件我有我的代码,这是持有我所有的JPanel代码到目前为止的一部分。任何我想要的帮助,谢谢 import javax.swing.*; import javax.swing.border.

您好,我正在尝试添加一个边界或一个分隔线,将北段与JPanel的其余部分分开。基本上使用“设置边框”,我在整个窗口周围有一个边框,但需要一条线,从边框的一部分水平穿过到另一侧。当我向添加到BorderLayout.NORTH的JPanel添加边框时,它会将整个边框放在节内。不是本节的大纲。希望你明白我的意思

附件我有我的代码,这是持有我所有的JPanel代码到目前为止的一部分。任何我想要的帮助,谢谢

import javax.swing.*;
import javax.swing.border.*;

import java.awt.*;

public class GamePanel extends JPanel {

private JTextPane playertext;
private JTextField wealthstring, currentwealth;

public GamePanel() {

    super();
    setLayout(new BorderLayout());
    setBackground(Game.getBackgroundColor());
    Border raised = BorderFactory.createRaisedBevelBorder();
    Border lowered = BorderFactory.createLoweredBevelBorder();
    setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(4, 4, 4, 4), (BorderFactory.createCompoundBorder(raised, lowered))));
    add(northpanel(), BorderLayout.NORTH);
    add(eastpanel(), BorderLayout.EAST);


}


private JPanel northpanel() {

    Font northfont = new Font("Engravers MT", Font.BOLD, 12);

    playertext = new JTextPane();
    playertext.setFont(northfont);
    playertext.setEditable(false);
    playertext.setText("Player: \n" + Game.getName());
    playertext.setBackground(Game.getBackgroundColor());
    playertext.setBorder(new EmptyBorder(10,10,10,10));

    wealthstring = new JTextField("Money: ");
    wealthstring.setFont(northfont);
    wealthstring.setEditable(false);
    wealthstring.setHorizontalAlignment(wealthstring.RIGHT);
    wealthstring.setBorder(null);
    wealthstring.setBackground(Game.getBackgroundColor());

    currentwealth = new JTextField();
    currentwealth.setFont(northfont);
    currentwealth.setEditable(false);
    currentwealth.setHorizontalAlignment(wealthstring.RIGHT);
    currentwealth.setBackground(Game.getBackgroundColor());
    currentwealth.setBorder(null);
    String wealthrounded = String.format("%.2f", Game.getMoney());
    currentwealth.setText(wealthrounded);

    JPanel wealthtext = new JPanel();
    wealthtext.setLayout(new GridLayout(2, 1));
    wealthtext.setBackground(Game.getBackgroundColor());
    wealthtext.setBorder(new EmptyBorder(10,10,10,10));
    wealthtext.add(wealthstring);
    wealthtext.add(currentwealth);

    JPanel northpanel = new JPanel();
    northpanel.setLayout(new BorderLayout());
    northpanel.setBackground(Game.getBackgroundColor());
    northpanel.add(playertext, BorderLayout.WEST);
    northpanel.add(wealthtext, BorderLayout.EAST);

    return northpanel;
}

private JPanel eastpanel() {


    JButton tab1 = new JButton("Tab 1");
    JButton tab2 = new JButton("Tab 2");
    JButton tab3 = new JButton("Tab 3");

    JPanel easttabs = new JPanel();
    easttabs.setLayout(new GridLayout(1, 3));
    easttabs.add(tab1);
    easttabs.add(tab2);
    easttabs.add(tab3);

    JPanel eastpanels = new JPanel();
    eastpanels.setLayout(new BorderLayout());
    eastpanels.add(easttabs, BorderLayout.NORTH);

    return eastpanels;
}

}
像这样

为此,我们将使用一个


伟大的它在我想要的地方与边界完全对齐。但是,我可以把它作为一条线,而不是一条线,我把它和外面的边界一样吗?升高和降低的斜角线?附言:我肯定会投票支持你,但我是新的:附言
import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class UnderlinePageStart {

    private JComponent ui = null;

    UnderlinePageStart() {
        initUI();
    }

    public void initUI() {
        if (ui!=null) return;

        ui = new JPanel(new BorderLayout(4,4));
        ui.setBorder(new EmptyBorder(4,4,4,4));

        JPanel pageStart = new JPanel(new BorderLayout(2,2));
        ui.add(pageStart, BorderLayout.PAGE_START);
        pageStart.add(new JLabel("Page Start", SwingConstants.CENTER));
        // add a 'horizontal line'
        pageStart.add(new JSeparator(), BorderLayout.PAGE_END);

        ui.add(new JScrollPane(new JTextArea(5, 25)));
    }

    public JComponent getUI() {
        return ui;
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                UnderlinePageStart o = new UnderlinePageStart();

                JFrame f = new JFrame("Underline Page Start");
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                f.setLocationByPlatform(true);

                f.setContentPane(o.getUI());
                f.pack();
                f.setMinimumSize(f.getSize());

                f.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}