gpt4 book ai didi

java - 这个 JLabel 上的什么是无效的?

转载 作者:行者123 更新时间:2023-11-29 07:15:06 25 4
gpt4 key购买 nike

好的,当我执行 MyBox.toString() 时打印出以下内容

com.swa.fin.esaa.sgb.myclasses.mydatatypes.MyAlphaForLabel[,0,0,0x0,invalid,hidden,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.MatteBorder@1082823,flags=25165824,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=0,height=0],defaultIcon=,disabledIcon=,horizontalAlignment=LEFT,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=TOP,verticalTextPosition=CENTER]

MyBox 由以下人员设置:

public void MySetMyBox( Rectangle bounds, Color color, Color bcolor, int bwidth ) {
MyBox = new MyAlphaForLabel();
MyBox.setComponentOrientation( ComponentOrientation.LEFT_TO_RIGHT );
MyBox.setVerticalAlignment( JLabel.TOP );
MyBox.setHorizontalAlignment( JLabel.LEFT );
MyBox.setFont( new Font(Font.MONOSPACED, Font.PLAIN, 12 ) );
MyBox.setBackground( color );
MyBox.setEnabled( true );
MyBox.setVisible( MyVisible );
MyBox.setFocusable( true );
MyBox.setOpaque( MyOpaque );
MyBox.setBounds( bounds );
MyBox.setSize( new Dimension( bounds.width, bounds.height ) );
MyBox.setPreferredSize( new Dimension( bounds.width, bounds.height ) );
if ( ( MyDashed ) || ( MySelected ) && ( MyCellType != MYCELLS.ZOOM ) ) {
MyBox.setBorder( new MyDashedBorder( bcolor, bwidth, bwidth ) );
} else {
MyBox.setBorder( new MatteBorder( bwidth, bwidth, bwidth, bwidth, bcolor ) );
}
}

所有 MyXxxxx 变量都声明为必要的(IE MyVisible 是一个 boolean 值,此时为真)。

MyBox 是一个 MyAlphaForLabel:

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.io.Serializable;
import javax.swing.JLabel;
import com.swa.fin.esaa.sgb.MyData;
import com.swa.fin.esaa.sgb.myclasses.myutils.MyDebug;

public class MyAlphaForLabel extends JLabel implements MyData, Serializable {

private static final long serialVersionUID = 5522598090700895821L;

private MyDebug dbug = new MyDebug( MyData.MYDEBUGCHECK.MYALPHAFORLABEL.getOn() );

public String MyTextString = "";

public MyAlphaForLabel() {
super();
this.setOpaque( false );
}

/**
* Paint the background using the background Color of the
* contained component
*/
@Override
public void paintComponent( Graphics graphics ) {

// Set color for the text label
int red = ( this.getBackground().getRed() >= 50 ) ? ( this.getBackground().getRed() - 50 ) : ( this.getBackground().getRed() + 50 );
int green = ( this.getBackground().getGreen() >= 50 ) ? ( this.getBackground().getGreen() - 50 ) : ( this.getBackground().getGreen() + 50 );
int blue = ( this.getBackground().getBlue() >= 50 ) ? ( this.getBackground().getBlue() - 50 ) : ( this.getBackground().getBlue() + 50 );
int alpha = 128;

// Make sure we are displaying something
if ( this.getBackground().getAlpha() != 0 ) {
// First draw rectangle
graphics.setColor( this.getBackground() );
graphics.fillRect(0, 0, this.getWidth(), this.getHeight());
// Then draw text label
graphics.setColor( new Color( red, green, blue, alpha ) );
graphics.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 10 ) );
graphics.drawString(MyTextString, 5, 15);
dbug.Message( "MYALPHACONTAINER", "paintComponent set text to %s ", MyTextString );

}
}
}

我的问题是哪里出了问题?为什么说无效。

好的,我看到了下面的一个答案,我想我会添加更多信息:

好的,但我遇到的问题是我将它添加到 JScrollPane,但它没有显示。

我有一个大型数据类,其中包含由我绘制的 JLabel 表示的“盒子”的所有重要信息。例如,我需要从绘制的 JLabel 转换为它所代表的工程图的缩放坐标。无论如何,我曾经让数据类成为 JLabel(或 MyAlphaForLabel)的扩展,它工作正常并出现在 JScrollPane 上。当我想将我的数据导出到 XML 时,我遇到了问题,因为无论我对 Accessor 为 NONE 做了什么,它都会获取父类。因此,我将“JLabel”移动到一段未由 XML 导出的数据记录中。我现在没有将整个数据记录添加到 JScrollPane,而是只添加了 JLabel。在 pane.add() 语句中选择完全相同的代码只是更改了类公共(public)变量,而不是之前的整个类。但我不再让 JLabel 显示在 JScrollPane 上。我也不知道为什么。

有什么想法吗?

我意识到这里没有代码,但它确实包含大量代码。

最佳答案

这只是意味着您的组件还没有被布局管理器验证

关于java - 这个 JLabel 上的什么是无效的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10284778/

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