gpt4 book ai didi

java - 创建部分为虚线和部分为实线的边框

转载 作者:行者123 更新时间:2023-12-02 05:17:13 25 4
gpt4 key购买 nike

我创建了一个表格,其中有一个区域包含所有单元格,其中顶部边框是一条实线,而底部和右侧则是虚线。我想出了如何单独使其不绘制边框的一侧,所以我认为我可以将虚线和实线边框组合在一起,而在另一边框需要绘制的地方则是空的。取而代之的是,它们仅在顶部绘制两个图形。这是我的代码:

Border empty = BorderFactory.createEmptyBorder(0, -1, -1, -1);
Border dashed = BorderFactory.createDashedBorder(Color.BLUE, 5, 5);
Border empty2 = BorderFactory.createEmptyBorder(-1, -1, -1, 0);
Border line = BorderFactory.createLineBorder(Color.black);
Border compound1 = new CompoundBorder(empty, line);
Border compound2= new CompoundBorder(empty2,dashed);
Border compound = new CompoundBorder(compound1,compound2);

这是我的完整代码,如果您想运行它以查看我在说什么:
* Class to create the specified table
* @author CGordo01
*
*/
public class WordDocumentTable extends JPanel{
Font f;
// Holds all the label, is used for resizing
ArrayList<JLabel> allLabels= new ArrayList<JLabel>();
/**
* Creates the table
*/
public WordDocumentTable(){

// Sets the layout to a gridBagLayout
this.setLayout(new GridBagLayout());
f = new Font("SansSerif", Font.PLAIN, 12);
//Adds a component listener
this.addComponentListener(new ComponentAdapter() {
@Override
/**
* If the component is resized makes the text fit the dimensions
*/
public void componentResized(ComponentEvent e) {
// Boolean used to see if the text width fits the component.
Boolean fits= false;

// value used to divide the components height by.
double divider = 16;

// Makes the font size scale according to the width and height.
while(fits == false){
f= f.deriveFont((float) (e.getComponent().getHeight()/divider));
for (int i = 0; i<allLabels.size();i++){
allLabels.get(i).setFont(f);
//System.out.println(divider);
if(allLabels.get(i).getGraphics().getFontMetrics().stringWidth(allLabels.get(i).getText())>allLabels.get(i).getWidth()){
fits = false;
divider++;
break;
}
else{
fits = true;
}

}
}
}
});
makeLeftCells();

makeMidCells();

makeLongCells();

makeTopCells();

}
/**
* Creates the cells that are in between widths of the other cells
*/
private void makeMidCells() {
GridBagConstraints midCells = new GridBagConstraints();
midCells.fill= GridBagConstraints.BOTH;
midCells.weightx=1;
midCells.weighty=1;
midCells.gridwidth=4;
midCells.gridy=9;
midCells.gridx=1;

JLabel b = new JLabel();
b.setText(".Batch Total " + " 985124 " + " Patches ");
b.setName("Previous Batch Total");
b.setBackground(Color.white);
b.setBorder(new LineBorder(Color.black));
b.setOpaque(true);
b.setFont(f);
this.add(b,midCells);

midCells.gridx=5;
JLabel b2 = new JLabel();
b2.setText(".Shift Total " + " 985124 " + " Patches ");
b2.setName("Previous Shift Total");
b2.setBackground(Color.white);
b2.setBorder(new LineBorder(Color.black));
b2.setOpaque(true);
b2.setFont(f);
this.add(b2,midCells);

midCells.gridy=12;
midCells.gridx=1;

JLabel c = new JLabel();
c.setText(".Batch Total " + " 985124 " + " Patches ");
c.setName("Batch Total");
c.setBackground(Color.white);
c.setBorder(new LineBorder(Color.black));
c.setOpaque(true);
c.setFont(f);
this.add(c,midCells);

midCells.gridx=5;
JLabel c2 = new JLabel();
c2.setText(".Shift Total " + " 985124 " + " Patches ");
c2.setName("Shift Total");
c2.setBackground(Color.white);
c2.setBorder(new LineBorder(Color.black));
c2.setOpaque(true);
c2.setFont(f);
this.add(c2,midCells);

allLabels.add(b);
allLabels.add(b2);
allLabels.add(c);
allLabels.add(c2);
}

/**
* Creates the cells which span much of the grid
*/
private void makeLongCells() {
GridBagConstraints longCells = new GridBagConstraints();
longCells.fill= GridBagConstraints.BOTH;
longCells.weightx=1;
longCells.weighty=1;
longCells.gridwidth=8;
longCells.gridx=1;
longCells.gridy=7;

JLabel b = new JLabel();
b.setText("Finish the Batch");
b.setName("Previous Shift Goal");
b.setBackground(Color.white);
b.setBorder(new LineBorder(Color.black));
b.setOpaque(true);
b.setFont(f);
this.add(b,longCells);

longCells.gridy=8;

JLabel c = new JLabel();
c.setText("<html><p> blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah</p></html>");
c.setName("Previous Shift Notes");
c.setBackground(Color.white);
c.setBorder(new LineBorder(Color.black));
c.setOpaque(true);
c.setFont(f);
this.add(c,longCells);

longCells.gridy=10;

JLabel d = new JLabel();
d.setText("Shift Goal");
d.setName("Shift Goal");
d.setBackground(Color.white);
d.setBorder(new LineBorder(Color.black));
d.setOpaque(true);
d.setFont(f);
this.add(d,longCells);

longCells.gridy=11;

JLabel e = new JLabel();
e.setText("Shift Notes");
e.setName("Shift Goal");
e.setBackground(Color.white);
e.setBorder(new LineBorder(Color.black));
e.setOpaque(true);
e.setFont(f);
this.add(e,longCells);

longCells.gridy=13;

JLabel f2 = new JLabel();
f2.setText("");
f2.setName("WO Schedule Note");
f2.setBackground(Color.white);
f2.setBorder(new LineBorder(Color.black));
f2.setOpaque(true);
f2.setFont(f);
this.add(f2,longCells);

longCells.gridy=14;

JLabel g = new JLabel();
g.setText("");
g.setName("Supervisor");
g.setBackground(Color.white);
g.setBorder(new LineBorder(Color.black));
g.setOpaque(true);
g.setFont(f);
this.add(g,longCells);

allLabels.add(b);
allLabels.add(c);
allLabels.add(d);
allLabels.add(e);
allLabels.add(f2);
allLabels.add(g);

}
/**
* Creates a 8x7 grid of small cells
*/
private void makeTopCells() {
GridBagConstraints topCells = new GridBagConstraints();
topCells.fill= GridBagConstraints.BOTH;
topCells.weighty=1;
topCells.weightx=1;
for (int i = 0; i < 8; i++)
{
topCells.gridx=i+1;
for (int j = 0; j < 7; j++)
{
topCells.gridy=j;
JLabel b = new JLabel();
b.setText("" + i + j);
b.setName("" + i + j);
b.setOpaque(true);
b.setFont(f);
if(j==0){
b.setBackground(new Color(242,242,242));
}
else{
b.setBackground(Color.white);
}
if (j==0){
b.setBorder(new LineBorder(Color.black));
}
else{
Border empty = null;
Border compound = null;
Border dashed = BorderFactory.createDashedBorder(Color.BLUE, 5, 5);
if(j==1){
empty = BorderFactory.createEmptyBorder(-1, 0, -1, -1);
}
else{
empty = BorderFactory.createEmptyBorder(0, 0, -1, -1);
}
if(j!=4){
compound = new CompoundBorder(empty, dashed);
}
else{
empty = BorderFactory.createEmptyBorder(0, -1, -1, -1);
Border empty2 = BorderFactory.createEmptyBorder(-1, -1, -1, 0);
Border line = new LineBorder(Color.black);
Border compound1 = new CompoundBorder(empty, line);
Border compound2= new CompoundBorder(empty2,dashed);
compound = new CompoundBorder(compound1,compound2);

}
b.setBorder(compound);
}

allLabels.add(b);
this.add(b,topCells);
}
}

}

private void makeLeftCells() {
GridBagConstraints leftCells = new GridBagConstraints();

leftCells.fill = GridBagConstraints.BOTH;
leftCells.gridx = 0;
leftCells.gridy = 0;
leftCells.weightx=2;
leftCells.weighty=1;

JLabel titleBlock = new JLabel();
titleBlock.setOpaque(true);
titleBlock.setText("Delta Hydrogel A");
titleBlock.setForeground(Color.white);
titleBlock.setBackground(new Color(79,129,189));
titleBlock.setBorder(new LineBorder(Color.black));
titleBlock.setFont(f);

this.add(titleBlock, leftCells);

leftCells.gridy = 1;
leftCells.gridheight=3;

JLabel tallBlock1 = new JLabel();
tallBlock1.setOpaque(true);
tallBlock1.setText(".Day Shift");
tallBlock1.setForeground(Color.black);
tallBlock1.setBackground(new Color(242,242,242));
tallBlock1.setBorder(new LineBorder(Color.black));
tallBlock1.setFont(f);
this.add(tallBlock1, leftCells);



JLabel tallBlock2 = new JLabel();
tallBlock2.setOpaque(true);
tallBlock2.setText(".Night Shift");
tallBlock2.setForeground(Color.black);
tallBlock2.setBackground(new Color(242,242,242));
tallBlock2.setBorder(new LineBorder(Color.black));
tallBlock2.setFont(f);
leftCells.gridy = 4;

this.add(tallBlock2, leftCells);

JLabel shortBlock1 = new JLabel();
shortBlock1.setOpaque(true);
shortBlock1.setText(".Previous Shift Goal");
shortBlock1.setForeground(Color.black);
shortBlock1.setBackground(new Color(242,242,242));
shortBlock1.setBorder(new LineBorder(Color.black));
shortBlock1.setFont(f);
leftCells.gridy = 7;
leftCells.gridheight=1;

this.add(shortBlock1, leftCells);

JLabel shortBlockTall = new JLabel();
shortBlockTall.setOpaque(true);
shortBlockTall.setText(".Previous Shift Notes");
shortBlockTall.setForeground(Color.black);
shortBlockTall.setBackground(new Color(242,242,242));
shortBlockTall.setBorder(new LineBorder(Color.black));
shortBlockTall.setFont(f);
leftCells.gridy = 8;
leftCells.ipady=50;

this.add(shortBlockTall, leftCells);

JLabel shortBlock2 = new JLabel();
shortBlock2.setOpaque(true);
shortBlock2.setText(".Previous Shift Output");
shortBlock2.setForeground(Color.black);
shortBlock2.setBackground(new Color(242,242,242));
shortBlock2.setBorder(new LineBorder(Color.black));
shortBlock2.setFont(f);
leftCells.gridy = 9;
leftCells.ipady=0;


this.add(shortBlock2, leftCells);

JLabel shortBlock3 = new JLabel();
shortBlock3.setOpaque(true);
shortBlock3.setText(".Shift Goals");
shortBlock3.setForeground(Color.black);
shortBlock3.setBackground(new Color(184,204,228));
shortBlock3.setBorder(new LineBorder(Color.black));
shortBlock3.setFont(f);
leftCells.gridy = 10;
leftCells.ipady=0;


this.add(shortBlock3, leftCells);


JLabel shortBlock4 = new JLabel();
shortBlock4.setOpaque(true);
shortBlock4.setText(".Shift Notes");
shortBlock4.setForeground(Color.black);
shortBlock4.setBackground(new Color(184,204,228));
shortBlock4.setBorder(new LineBorder(Color.black));
shortBlock4.setFont(f);
leftCells.gridy = 11;
leftCells.ipady=0;


this.add(shortBlock4, leftCells);

JLabel shortBlock5 = new JLabel();
shortBlock5.setOpaque(true);
shortBlock5.setText(".Output");
shortBlock5.setForeground(Color.black);
shortBlock5.setBackground(new Color(184,204,228));
shortBlock5.setBorder(new LineBorder(Color.black));
shortBlock5.setFont(f);
leftCells.gridy = 12;


this.add(shortBlock5, leftCells);

JLabel shortBlock6 = new JLabel();
shortBlock6.setOpaque(true);
shortBlock6.setText(".WO Schedule Note");
shortBlock6.setForeground(Color.black);
shortBlock6.setBackground(new Color(184,204,228));
shortBlock6.setBorder(new LineBorder(Color.black));
shortBlock6 .setFont(f);
leftCells.gridy = 13;

this.add(shortBlock6, leftCells);

JLabel shortBlock7 = new JLabel();
shortBlock7.setOpaque(true);
shortBlock7.setText(".Supervisor");
shortBlock7.setForeground(Color.black);
shortBlock7.setBackground(new Color(184,204,228));
shortBlock7.setBorder(new LineBorder(Color.black));
shortBlock7.setFont(f);
leftCells.gridy = 14;

this.add(shortBlock7, leftCells);

allLabels.add(titleBlock);
allLabels.add(tallBlock1);
allLabels.add(tallBlock2);
allLabels.add(shortBlock1);
allLabels.add(shortBlockTall);
allLabels.add(shortBlock2);
allLabels.add(shortBlock3);
allLabels.add(shortBlock4);
allLabels.add(shortBlock5);
allLabels.add(shortBlock6);
allLabels.add(shortBlock7);



}
public static void main (String[] args)
{
JFrame J = new JFrame();
J.setSize(1600,900);
J.setVisible(true);


WordDocumentTable wdc= new WordDocumentTable();

J.setContentPane(wdc);
J.setVisible(true);
J.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

最佳答案

好吧,我不确定我是否理解它,但是我使它起作用了。我将用于虚线的空白边框中的第一个参数更改为-2。我的推理是-1不起作用,让我们尝试-2。

Border empty = BorderFactory.createEmptyBorder(0, -1, -1, -1);
Border dashed = BorderFactory.createDashedBorder(Color.BLUE, 5, 5);
Border empty2 = BorderFactory.createEmptyBorder(-2, -1, -1, 0);
Border line = BorderFactory.createLineBorder(Color.black);
Border compound1 = new CompoundBorder(empty, line);
Border compound2= new CompoundBorder(empty2,dashed);
Border compound = new CompoundBorder(compound1,compound2);

关于java - 创建部分为虚线和部分为实线的边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31166279/

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