- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在做一个简单的计算器,问题出在按钮上。当我点击它们时,它们在底部略微收缩,这是我不想做的。此外,当我单击 textArea 时,白点消失了,但是当我单击按钮时,textArea 周围的点再次显示。为什么?如何让它们永久不可见?
我试图在 .button:pressed 代码中放入 css,将按钮的大小设置为正常大小,但它不起作用。无论如何,它们正在缩小。
主.java
package gui;
public class Main {
public static void main(String[] args){Calculator.main(args);}
}
计算器.java
package gui;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.image.Image;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class Calculator extends Application {
public static void main(String[] args){
launch(args);
}
private TextArea screen;
private Button button0, button1, button2, button3, button4, button5, button6, button7, button8, button9, buttonPlus, buttonMinus,
buttonDevide, buttonTimes, buttonEqual, buttonDot, buttonSign, buttonClear, buttonPercent, buttonClose, buttonMinimalize;
@Override
public void start(Stage primaryStage) throws Exception {
StackPane stackPane = new StackPane();
Pane pane = new Pane();
buttonClose = new Button(" ");
buttonClose.setId("buttonClose");
buttonMinimalize = new Button();
buttonMinimalize.setId("buttonMinimalize");
buttonClose.setLayoutX(0);
buttonClose.setLayoutY(0);
pane.getChildren().add(buttonClose);
buttonMinimalize.setLayoutX(15);
buttonMinimalize.setLayoutY(-1);
pane.getChildren().add(buttonMinimalize);
buttonClose.setOnAction(e->System.exit(0));
buttonMinimalize.setOnAction(e->primaryStage.setIconified(true));
primaryStage.initStyle(StageStyle.TRANSPARENT);
primaryStage.setTitle("Calculator");
//primaryStage.getIcons().add(new Image(Calculator.class.getResourceAsStream("Icon.png"))); - Don't worry, I hid this for you
GridPane gridPane = new GridPane();
gridPane.setAlignment(Pos.CENTER);
gridPane.setHgap(10);
gridPane.setVgap(10);
gridPane.setPadding(new Insets(10,10,10,10));
gridPane.add(pane,0,0);
//Buttons
int row = 1;
screen = new TextArea();
screen.setId("screen");
screen.setEditable(false);
gridPane.add(screen,0,row,4,1);
row++;
buttonClear = new Button("AC");
buttonClear.setId("buttonClear");
gridPane.add(buttonClear,0,row);
buttonSign = new Button("+/-");
buttonSign.setId("buttonSign");
gridPane.add(buttonSign,1,row);
buttonPercent = new Button("%");
buttonPercent.setId("buttonPercent");
gridPane.add(buttonPercent,2,row);
buttonDevide = new Button("/");
buttonDevide.setId("buttonDevide");
gridPane.add(buttonDevide,3,row);
row++;
button7 = new Button("7");
gridPane.add(button7,0,row);
button8 = new Button("8");
gridPane.add(button8,1,row);
button9 = new Button("9");
gridPane.add(button9,2,row);
buttonTimes = new Button("x");
buttonTimes.setId("buttonTimes");
gridPane.add(buttonTimes,3,row);
row++;
button4 = new Button("4");
gridPane.add(button4,0,row);
button5 = new Button("5");
gridPane.add(button5,1,row);
button6 = new Button("6");
gridPane.add(button6,2,row);
buttonMinus = new Button("-");
buttonMinus.setId("buttonMinus");
gridPane.add(buttonMinus,3,row);
row++;
button1 = new Button("1");
gridPane.add(button1,0,row);
button2 = new Button("2");
gridPane.add(button2,1,row);
button3 = new Button("3");
gridPane.add(button3,2,row);
buttonPlus = new Button("+");
buttonPlus.setId("buttonPlus");
gridPane.add(buttonPlus,3,row);
row++;
button0 = new Button("0");
button0.setId("button0");
gridPane.add(button0,0,row,2,1);
buttonDot = new Button(".");
gridPane.add(buttonDot,2,row);
buttonEqual = new Button("=");
buttonEqual.setId("buttonEqual");
gridPane.add(buttonEqual,3,row);
stackPane.getChildren().add(gridPane);
//---------------------- DRAG AND DROP
final Delta dragDelta = new Delta();
stackPane.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
// record a delta distance for the drag and drop operation.
dragDelta.x = primaryStage.getX() - mouseEvent.getScreenX();
dragDelta.y = primaryStage.getY() - mouseEvent.getScreenY();
}
});
stackPane.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
primaryStage.setX(mouseEvent.getScreenX() + dragDelta.x);
primaryStage.setY(mouseEvent.getScreenY() + dragDelta.y);
}
});
//------------------------ END OF DRAG AND DROP
Scene scene = new Scene(stackPane,250,480);
scene.setFill(Color.TRANSPARENT);
scene.getStylesheets().add(Calculator.class.getResource("Style.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.setMinHeight(480);
primaryStage.setMinWidth(250);
primaryStage.show();
}
}
class Delta { double x, y; }
样式.css
.root{
-fx-background-color: #000;
-fx-background-radius: 10;
}
#screen{
-fx-pref-height: 150px;
-fx-pref-width: 230px;
-fx-control-inner-background: #000000;
-fx-focus-color: #000000;
-fx-text-box-border: #000000;
-fx-background-color: #000000;
-fx-focus-color: black;
-fx-faint-focus-color: black;
-fx-text-box-border: black;
}
.button{
-fx-pref-height: 50px;
-fx-pref-width: 50px;
-fx-background-radius: 100;
-fx-font-size: 15;
-fx-font-Weight: bold;
-fx-background-color: #333333;
-fx-text-fill: #FFFFFF;
}
.button:hover{
-fx-background-color: #3d3d3d;
}
.button:pressed{
-fx-background-color: #2e2e2e;
}
#button0{
-fx-pref-height: 50px;
-fx-pref-width: 110px;
}
#buttonPercent, #buttonClear, #buttonSign{
-fx-background-color: #A5A5A5;
-fx-text-fill: #000000;
}
#buttonPercent:hover, #buttonClear:hover, #buttonSign:hover{
-fx-background-color: #b0b0b0;
-fx-text-fill: #000000;
}
#buttonPercent:pressed, #buttonClear:pressed, #buttonSign:pressed{
-fx-background-color: #969696;
-fx-text-fill: #000000;
}
#buttonDevide, #buttonTimes, #buttonMinus, #buttonPlus, #buttonEqual{
-fx-background-color: #FD9500;
}
#buttonDevide:hover, #buttonTimes:hover, #buttonMinus:hover, #buttonPlus:hover, #buttonEqual:hover{
-fx-background-color: #ffa421;
}
#buttonDevide:pressed, #buttonTimes:pressed, #buttonMinus:pressed, #buttonPlus:pressed, #buttonEqual:pressed{
-fx-background-color: #f08e00;
}
#buttonClose{
-fx-background-color: #e00000;
-fx-background-radius: 100;
-fx-pref-height: 10px;
-fx-pref-width: 10px;
-fx-font-size: 1px;
}
#buttonMinimalize{
-fx-background-color: #1045c2;
-fx-background-radius: 100;
-fx-pref-height: 10px;
-fx-pref-width: 10px;
-fx-font-size: 1px;
}
最佳答案
要删除此按钮效果,请将其添加到 Style.css 中的 .button
-fx-background-insets: 0 0 -1 0, 0, 1, 2;
要删除 textArea Angular 中的黑点,您可以将屏幕包裹到 Pane 中:
Pane blackPane = new Pane();
blackPane.setId("blackPane");
screen = new TextArea();
screen.setId("screen");
screen.setEditable(false);
blackPane.getChildren().add(screen);
gridPane.add(blackPane, 0, row, 4, 1);
并添加 CSS 属性:
#blackPane #screen {
-fx-background-color: black;
-fx-background-radius: 0;
}
在我的案例中效果很好。
还有一些关于 future 的提示:
阅读并执行您的 IDE(推荐 Intellij)的建议。你有很多重复和复杂的、错误的代码格式。例如:
stackPane.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
// record a delta distance for the drag and drop operation.
dragDelta.x = primaryStage.getX() - mouseEvent.getScreenX();
dragDelta.y = primaryStage.getY() - mouseEvent.getScreenY();
}
});
可以这样替换:
stackPane.setOnMousePressed(mouseEvent -> {
// record a delta distance for the drag and drop operation.
dragDelta.x = primaryStage.getX() - mouseEvent.getScreenX();
dragDelta.y = primaryStage.getY() - mouseEvent.getScreenY();
});
关于java - 为什么按钮在点击时调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56975677/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!