我开发了一个 Java FX 应用程序,并使用 CSS 进行样式设置。该应用程序几乎对所有内容都使用默认颜色,因此我发现只需在 .css 中添加一个更暗的底色即可:
/* DarkTheme*/
.root {
-fx-base: rgba(60, 60, 60, 255);
}
Run Code Online (Sandbox Code Playgroud)
我得到了一个黑暗的主题效果,所有的颜色都会相应地调整。我只是找不到一种以编程方式执行此操作的方法,实际上是通过添加#setStyle 的那一行:
1)我应该在哪个节点上使用 setStyle ?此规则将影响所有节点。
2)我传递给什么字符串 setStyle?我假设:
<node>.setStyle("-fx-base: rgba(60, 60, 60, 255);"); //dark theme
<node>.setStyle("-fx-base: <something>"); //back to light def. theme
Run Code Online (Sandbox Code Playgroud)
3)一旦我找到了正确的元素,如果我想回去,我该怎么做? 我是否需要再次调用 set style,传递基色(我需要从一些元数据中提取?),或者我可以以某种方式删除以前的样式添加?**
最终结果应该是一个控件(按钮、radiob 等),允许在深色和浅色主题之间快速切换。
我正试图用apache poi改变一个单元格的背景.
我知道有很多关于此的答案,但我使用的是最新版本(3.16)并且它们都被弃用了.
例如,所有答案都表明我使用了
CellStyle#setFillPattern(CellStyle.SOLID_FOREGROUND);
Run Code Online (Sandbox Code Playgroud)
但它完全被弃用了.
因此,在apache文档之后,我用新的函数替换了所有已弃用的函数,并提出了这个MCVE:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Mcve{
public static void main(String[] args) {
//Make workbook and first sheet
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("sheet1");
//Make a style
XSSFCellStyle style = workbook.createCellStyle();
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
style.setFillBackgroundColor(IndexedColors.RED.getIndex());
//Fill first line
Row row = sheet.createRow(0);
int i = 0;
while (i < 5) { …Run Code Online (Sandbox Code Playgroud) 我需要使用Graphics#drawString绘制文本
我正在绘制一个JPanel在宽度和高度上都会改变的(通过拖动).
我正在寻找一个生成边界的解决方案,这样我就可以自动扭曲线条并相应地调整文本,而不会溢出.
我想我可以通过使用fontMetrics获取像素的长度来自己进行硬编码,但是,我宁愿有一个自动执行此操作的组件(drawString也不支持'\n').
在文档,以及在这个其他答案,我发现这一点:
Graphics2D g = ...;
Point2D loc = ...;
Font font = Font.getFont("Helvetica-bold-italic");
FontRenderContext frc = g.getFontRenderContext();
TextLayout layout = new TextLayout("This is a string", font, frc);
layout.draw(g, (float)loc.getX(), (float)loc.getY());
Rectangle2D bounds = layout.getBounds();
bounds.setRect(bounds.getX()+loc.getX(),
bounds.getY()+loc.getY(),
bounds.getWidth(),
bounds.getHeight());
g.draw(bounds);
Run Code Online (Sandbox Code Playgroud)
哪个绘制字符串和边界,但它们没有效果,所以这里没有运气.
我可以使用的任何课程?