我的类GraphicButton.java
创建了一个JButton
带有特定文本和字体以及矩形边框的自定义.我的问题是在字符串的最后一个字符和我想要删除的边框的末尾之间有一些额外的空间.
这是一个GraphicButton
类似于字符串"PLAY"和字体FFF Forward (直接下载链接)添加到a 的实例JFrame
.红线是我想要移除的空间.
这是我正在使用的代码(JFrame
省略了创建和设置):
GraphicButton.java
:
public class GraphicButton extends JButton {
private static final long serialVersionUID = 1L;
//Fields
private String text;
private Font font;
//Constructor
public GraphicButton(String text, Font font) {
super(text);
this.text = text;
this.font = font;
//Setting preferred size here.
this.setPreferredSize(new Dimension(this.getFontMetrics(font).stringWidth(text), this.getFontMetrics(font).getAscent()));
}
@Override
public void paintComponent(Graphics g) {
g.setFont(this.font);
//Draw text
g.drawString(this.text, 0, this.getHeight());
//Draw border
g.drawRect(0, …
Run Code Online (Sandbox Code Playgroud) 此方法用于获取(通过用户输入)给定数据集中的两个最大整数并计算它们的乘积。它适用于每个输入,直到我尝试了两个整数的数组100000
并90000
返回410065408
.
这是我的 Java 方法:
static int getMaxPairwiseProduct(int[] numbers) {
int max=0,lessermax=0;
int n = numbers.length;
for (int j = 0; j < n; ++j) {
//if(j==k)continue;
if(numbers[j]>0 && numbers[j]>=max) {
lessermax=max;max=numbers[j];
System.out.println(j);//k=j;
} else if(numbers[j]>lessermax) {
lessermax=numbers[j];
System.out.println(j);}
}
//result=;
return max*lessermax;
}
Run Code Online (Sandbox Code Playgroud)
这是我的main
方法:
public static void main(String[] args) {
//FastScanner scanner = new FastScanner(System.in);
Scanner scanner=new Scanner(System.in);
int n = scanner.nextInt();
int[] numbers = new int[n];
for (int i = 0; …
Run Code Online (Sandbox Code Playgroud) JButton
当我单击第二个时,我想更改其中一个的文本JButton
,但它什么也没做。我不知道问题是什么。如果有人能尽快帮助我,那么我将非常感激并感谢一切努力。
public class myJPanel6 extends JPanel implements ActionListener
{
myJButton b1, b2;
student st1;
String s1;
public myJPanel6()
{
setLayout(new GridLayout(1,1));
student st1 = new student("Michael", "Robinson", 20);
b1 = new myJButton(st1.getName());
b1.addActionListener(this);
add(b1);
b2 = new myJButton(st1.WhatIsUp());
b2.addActionListener(this);
add(b2);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b1)
{
s1=st1.WhatIsUp();
b2.setText(s1);
}
}
Run Code Online (Sandbox Code Playgroud)