- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有如下带有刻度线的分组条形图。
$(document).ready(function() {
render_chart();
});
function render_chart() {
var dataset = {
"colors": [
"#1f77b4",
"#ffbb78",
"#e74c3c",
"#2ecc71",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#9467bd",
"#3498db",
],
"operators": [
"Client1",
"Client2",
"Client3",
"Client4"
],
"days": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"schedules": [{
"fromHours": "00:00:00",
"toHours": "08:00:00",
"operator": "Client1",
"day": "Monday",
"color": "#1f77b4"
},
{
"fromHours": "00:00:00",
"toHours": "08:00:00",
"operator": "Client2",
"day": "Monday",
"color": "#ffbb78"
},
{
"fromHours": "08:00:00",
"toHours": "14:00:00",
"operator": "Client2",
"day": "Monday",
"color": "#ffbb78"
},
{
"fromHours": "14:00:00",
"toHours": "18:00:00",
"operator": "Client3",
"day": "Monday",
"color": "#e74c3c"
},
{
"fromHours": "18:00:00",
"toHours": "23:59:59",
"operator": "Client4",
"day": "Monday",
"color": "#2ecc71"
},
{
"fromHours": "02:00:00",
"toHours": "16:00:00",
"operator": "Client4",
"day": "Tuesday",
"color": "#2ecc71"
},
{
"fromHours": "16:00:00",
"toHours": "20:00:00",
"operator": "Client3",
"day": "Tuesday",
"color": "#e74c3c"
},
{
"fromHours": "16:00:00",
"toHours": "23:59:59",
"operator": "Client1",
"day": "Tuesday",
"color": "#1f77b4"
},
{
"fromHours": "00:00:00",
"toHours": "17:00:00",
"operator": "Client4",
"day": "Wednesday",
"color": "#2ecc71"
},
{
"fromHours": "17:00:00",
"toHours": "23:59:59",
"operator": "Client3",
"day": "Wednesday",
"color": "#e74c3c"
}
]
};
var schedulesDataset = dataset["schedules"];
var daysDataset = dataset["days"];
dataset.layers = new Array();
var mondayData = new Array();
var tuesdayData = new Array();
var wednesdayData = new Array();
var thursdayData = new Array();
var fridayData = new Array();
var saturdayData = new Array();
var sundayData = new Array();
schedulesDataset.forEach(function(schedule) {
switch (schedule.day) {
case "Monday":
mondayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
case "Tuesday":
tuesdayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
case "Wednesday":
wednesdayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
case "Thursday":
thursdayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
case "Friday":
fridayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
case "Saturday":
saturdayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
case "Sunday":
sundayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
}
});
dataset.layers.push(mondayData);
dataset.layers.push(tuesdayData);
dataset.layers.push(wednesdayData);
dataset.layers.push(thursdayData);
dataset.layers.push(fridayData);
dataset.layers.push(saturdayData);
dataset.layers.push(sundayData);
var numberOfOperators = dataset["operators"].length;
var today = new Date();
today.setHours(0, 0, 0, 0);
todayMillis = today.getTime();
var layersData = dataset["layers"];
layersData.forEach(function(layer) {
layer.forEach(function(innerLayer) {
var fromHourParts = innerLayer.fromHours.split(/:/);
var toHourParts = innerLayer.toHours.split(/:/);
innerLayer.fromHours = new Date();
innerLayer.fromHours.setTime(todayMillis + getTimePeriodMillis(fromHourParts));
innerLayer.toHours = new Date();
innerLayer.toHours.setTime(todayMillis + getTimePeriodMillis(toHourParts));
})
});
function getTimePeriodMillis(parts) {
return (parseInt(parts[0], 10) * 60 * 60 * 1000) +
(parseInt(parts[1], 10) * 60 * 1000) +
(parseInt(parts[2], 10) * 1000);
}
function appendExtraZeroToSingleValues(inputValue) {
if (inputValue === 0) {
return inputValue + "0";
}
var parsedInputValue = inputValue.toString();
if (parsedInputValue.length === 1) {
return "0" + inputValue;
}
return inputValue;
}
var offsetWidth = 1000;
var margin = {
top: 50,
right: 50,
bottom: 50,
left: 100
},
width = offsetWidth - margin.left - margin.right,
height = 600 - margin.top - margin.bottom;
var svg = d3.select("#groupchart").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var xScale = d3.scaleTime()
.domain([new Date(), new Date()])
.nice(d3.timeDay, 1)
.range([0, width - margin.left]);
var yScale = d3.scaleBand()
.domain(dataset["days"])
.rangeRound([0, height])
.padding(.08);
var xAxis = d3.axisBottom(xScale)
.ticks(24)
.tickSize(-height)
.tickFormat(d3.timeFormat("%H"));
var yAxis = d3.axisLeft(yScale)
.tickSize(-(width - margin.left))
.tickPadding(5);
var layer = svg.selectAll(".layer")
.data(dataset["layers"])
.enter().append("g")
.attr("class", "layer");
var rect = layer.selectAll("rect")
.data(function(d, i) {
return d;
})
.enter()
.append("rect")
.transition()
.duration(500)
.delay(function(d, i) {
return i * 100;
})
.attr("y", function(d, i) {
return yScale(d.day) + yScale.bandwidth() / 7 * i;
})
.attr("height", yScale.bandwidth() / 7)
.transition()
.attr("x", function(d) {
return xScale(d.fromHours)
})
.attr("width", function(d) {
return xScale(Math.abs(d.toHours)) - xScale(Math.abs(d.fromHours));
})
.attr("class", "bar")
.style("fill", function(d, i) {
return d.color;
});
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.select("g")
.attr("class", "y axis")
.call(yAxis);
var legend = svg.append("g")
.attr("class", "legend")
legend.selectAll('text')
.data(dataset["operators"])
.enter()
.append("rect")
.attr("x", function(d, i) {
return (i * (offsetWidth / 10)) + (width / numberOfOperators);
})
.attr("y", function(d, i) {
return height + 30;
})
.attr("width", 10)
.attr("height", 10)
.style("fill", function(d, i) {
return dataset.colors[i];
})
legend.selectAll('text')
.data(dataset["operators"])
.enter()
.append("text")
.attr("x", function(d, i) {
return (i * (offsetWidth / 10)) + (width / numberOfOperators) + 12;
})
.attr("y", function(d, i) {
return height + 40;
})
.text(function(d) {
return d;
});
var tooltip = d3.select("body")
.append('div')
.attr('class', 'tooltip');
tooltip.append('div')
.attr('class', 'operator');
tooltip.append('div')
.attr('class', 'timeRange');
svg.selectAll("rect")
.on('mouseover', function(d, i) {
if (!d.day) return null;
tooltip.select('.operator').html("<b>" + d.operator + "</b>");
tooltip.select('.timeRange').html(appendExtraZeroToSingleValues(d.fromHours.getHours()) + ":" +
appendExtraZeroToSingleValues(d.fromHours.getMinutes()) + " Hours to " +
appendExtraZeroToSingleValues(d.toHours.getHours()) + ":" +
appendExtraZeroToSingleValues(d.toHours.getMinutes()) + " Hours");
tooltip.style('display', 'block');
tooltip.style('opacity', 2);
})
.on('mousemove', function(d) {
if (!d.day) return null;
tooltip.style('top', (d3.event.layerY + 10) + 'px')
.style('left', (d3.event.layerX - 25) + 'px');
})
.on('mouseout', function() {
tooltip.style('display', 'none');
tooltip.style('opacity', 0);
});
}
.axis .tick line {
stroke-width: 1;
stroke: rgba(0, 0, 0, 0.2);
}
.axis path,
.axis line {
fill: none;
font: 10px sans-serif;
stroke: #000;
shape-rendering: crispEdges;
}
.legend {
padding: 5px;
font-size: 15px;
font-family: 'Roboto', sans-serif;
background: yellow;
box-shadow: 2px 2px 1px #888;
}
.tooltip {
background: #eee;
box-shadow: 0 0 5px #999999;
color: #333;
font-size: 12px;
left: 130px;
padding: 10px;
position: absolute;
text-align: center;
top: 95px;
z-index: 10;
display: block;
opacity: 0;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Bar Graph</title>
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<script src="https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
<div id="groupchart" class="chart"></div>
</body>
</html>
half of the distance between current tick position and the next tick position
,因此分组条出现在 2 条黑线内。我认为在那种情况下它会更好看,也许我们可以应用一些 css 来区分每个相邻的组。
最佳答案
这些线对应于轴的刻度,它们由轴生成器自动创建和定位。
无需过多的重构或定制,您可以在它们创建后简单地将它们向下移动:
d3.selectAll(".y.axis .tick line").each(function(){
d3.select(this)
.attr("transform", "translate(0," + yScale.bandwidth()/2 + ")")
});
$(document).ready(function() {
render_chart();
});
function render_chart() {
var dataset = {
"colors": [
"#1f77b4",
"#ffbb78",
"#e74c3c",
"#2ecc71",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#9467bd",
"#3498db",
],
"operators": [
"Client1",
"Client2",
"Client3",
"Client4"
],
"days": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"schedules": [{
"fromHours": "00:00:00",
"toHours": "08:00:00",
"operator": "Client1",
"day": "Monday",
"color": "#1f77b4"
},
{
"fromHours": "00:00:00",
"toHours": "08:00:00",
"operator": "Client2",
"day": "Monday",
"color": "#ffbb78"
},
{
"fromHours": "08:00:00",
"toHours": "14:00:00",
"operator": "Client2",
"day": "Monday",
"color": "#ffbb78"
},
{
"fromHours": "14:00:00",
"toHours": "18:00:00",
"operator": "Client3",
"day": "Monday",
"color": "#e74c3c"
},
{
"fromHours": "18:00:00",
"toHours": "23:59:59",
"operator": "Client4",
"day": "Monday",
"color": "#2ecc71"
},
{
"fromHours": "02:00:00",
"toHours": "16:00:00",
"operator": "Client4",
"day": "Tuesday",
"color": "#2ecc71"
},
{
"fromHours": "16:00:00",
"toHours": "20:00:00",
"operator": "Client3",
"day": "Tuesday",
"color": "#e74c3c"
},
{
"fromHours": "16:00:00",
"toHours": "23:59:59",
"operator": "Client1",
"day": "Tuesday",
"color": "#1f77b4"
},
{
"fromHours": "00:00:00",
"toHours": "17:00:00",
"operator": "Client4",
"day": "Wednesday",
"color": "#2ecc71"
},
{
"fromHours": "17:00:00",
"toHours": "23:59:59",
"operator": "Client3",
"day": "Wednesday",
"color": "#e74c3c"
}
]
};
var schedulesDataset = dataset["schedules"];
var daysDataset = dataset["days"];
dataset.layers = new Array();
var mondayData = new Array();
var tuesdayData = new Array();
var wednesdayData = new Array();
var thursdayData = new Array();
var fridayData = new Array();
var saturdayData = new Array();
var sundayData = new Array();
schedulesDataset.forEach(function(schedule) {
switch (schedule.day) {
case "Monday":
mondayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
case "Tuesday":
tuesdayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
case "Wednesday":
wednesdayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
case "Thursday":
thursdayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
case "Friday":
fridayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
case "Saturday":
saturdayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
case "Sunday":
sundayData.push({
"fromHours": schedule.fromHours,
"toHours": schedule.toHours,
"operator": schedule.operator,
"day": schedule.day,
"color": schedule.color
});
break;
}
});
dataset.layers.push(mondayData);
dataset.layers.push(tuesdayData);
dataset.layers.push(wednesdayData);
dataset.layers.push(thursdayData);
dataset.layers.push(fridayData);
dataset.layers.push(saturdayData);
dataset.layers.push(sundayData);
var numberOfOperators = dataset["operators"].length;
var today = new Date();
today.setHours(0, 0, 0, 0);
todayMillis = today.getTime();
var layersData = dataset["layers"];
layersData.forEach(function(layer) {
layer.forEach(function(innerLayer) {
var fromHourParts = innerLayer.fromHours.split(/:/);
var toHourParts = innerLayer.toHours.split(/:/);
innerLayer.fromHours = new Date();
innerLayer.fromHours.setTime(todayMillis + getTimePeriodMillis(fromHourParts));
innerLayer.toHours = new Date();
innerLayer.toHours.setTime(todayMillis + getTimePeriodMillis(toHourParts));
})
});
function getTimePeriodMillis(parts) {
return (parseInt(parts[0], 10) * 60 * 60 * 1000) +
(parseInt(parts[1], 10) * 60 * 1000) +
(parseInt(parts[2], 10) * 1000);
}
function appendExtraZeroToSingleValues(inputValue) {
if (inputValue === 0) {
return inputValue + "0";
}
var parsedInputValue = inputValue.toString();
if (parsedInputValue.length === 1) {
return "0" + inputValue;
}
return inputValue;
}
var offsetWidth = 1000;
var margin = {
top: 50,
right: 50,
bottom: 50,
left: 100
},
width = offsetWidth - margin.left - margin.right,
height = 600 - margin.top - margin.bottom;
var svg = d3.select("#groupchart").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var xScale = d3.scaleTime()
.domain([new Date(), new Date()])
.nice(d3.timeDay, 1)
.range([0, width - margin.left]);
var yScale = d3.scaleBand()
.domain(dataset["days"])
.rangeRound([0, height])
.padding(.08);
var xAxis = d3.axisBottom(xScale)
.ticks(24)
.tickSize(-height)
.tickFormat(d3.timeFormat("%H"));
var yAxis = d3.axisLeft(yScale)
.tickSize(-(width - margin.left))
.tickPadding(5);
var layer = svg.selectAll(".layer")
.data(dataset["layers"])
.enter().append("g")
.attr("class", "layer");
var rect = layer.selectAll("rect")
.data(function(d, i) {
return d;
})
.enter()
.append("rect")
.transition()
.duration(500)
.delay(function(d, i) {
return i * 100;
})
.attr("y", function(d, i) {
return yScale(d.day) + yScale.bandwidth() / 7 * i;
})
.attr("height", yScale.bandwidth() / 7)
.transition()
.attr("x", function(d) {
return xScale(d.fromHours)
})
.attr("width", function(d) {
return xScale(Math.abs(d.toHours)) - xScale(Math.abs(d.fromHours));
})
.attr("class", "bar")
.style("fill", function(d, i) {
return d.color;
});
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.select("g")
.attr("class", "y axis")
.call(yAxis);
d3.selectAll(".y.axis .tick line").each(function(){
d3.select(this).attr("transform", "translate(0," + yScale.bandwidth()/2 + ")")
});
var legend = svg.append("g")
.attr("class", "legend")
legend.selectAll('text')
.data(dataset["operators"])
.enter()
.append("rect")
.attr("x", function(d, i) {
return (i * (offsetWidth / 10)) + (width / numberOfOperators);
})
.attr("y", function(d, i) {
return height + 30;
})
.attr("width", 10)
.attr("height", 10)
.style("fill", function(d, i) {
return dataset.colors[i];
})
legend.selectAll('text')
.data(dataset["operators"])
.enter()
.append("text")
.attr("x", function(d, i) {
return (i * (offsetWidth / 10)) + (width / numberOfOperators) + 12;
})
.attr("y", function(d, i) {
return height + 40;
})
.text(function(d) {
return d;
});
var tooltip = d3.select("body")
.append('div')
.attr('class', 'tooltip');
tooltip.append('div')
.attr('class', 'operator');
tooltip.append('div')
.attr('class', 'timeRange');
svg.selectAll("rect")
.on('mouseover', function(d, i) {
if (!d.day) return null;
tooltip.select('.operator').html("<b>" + d.operator + "</b>");
tooltip.select('.timeRange').html(appendExtraZeroToSingleValues(d.fromHours.getHours()) + ":" +
appendExtraZeroToSingleValues(d.fromHours.getMinutes()) + " Hours to " +
appendExtraZeroToSingleValues(d.toHours.getHours()) + ":" +
appendExtraZeroToSingleValues(d.toHours.getMinutes()) + " Hours");
tooltip.style('display', 'block');
tooltip.style('opacity', 2);
})
.on('mousemove', function(d) {
if (!d.day) return null;
tooltip.style('top', (d3.event.layerY + 10) + 'px')
.style('left', (d3.event.layerX - 25) + 'px');
})
.on('mouseout', function() {
tooltip.style('display', 'none');
tooltip.style('opacity', 0);
});
}
.axis .tick line {
stroke-width: 1;
stroke: rgba(0, 0, 0, 0.2);
}
.axis path,
.axis line {
fill: none;
font: 10px sans-serif;
stroke: #000;
shape-rendering: crispEdges;
}
.legend {
padding: 5px;
font-size: 15px;
font-family: 'Roboto', sans-serif;
background: yellow;
box-shadow: 2px 2px 1px #888;
}
.tooltip {
background: #eee;
box-shadow: 0 0 5px #999999;
color: #333;
font-size: 12px;
left: 130px;
padding: 10px;
position: absolute;
text-align: center;
top: 95px;
z-index: 10;
display: block;
opacity: 0;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Bar Graph</title>
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<script src="https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
<div id="groupchart" class="chart"></div>
</body>
</html>
关于d3.js - 在 d3 js 中移动 y 轴刻度线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50582147/
只是想知道 Jquery Mobile 是否足够稳定以用于实时生产企业移动应用程序。 有很多 HTML5 框架,因为我们的团队使用 JQuery 已经有一段时间了,我们更愿意使用 Jquery 移动框
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 3 年前。 Improve t
所以我尝试在 JavaScript 中对元素进行拖放。我使用的视频教程在这里; https://www.youtube.com/watch?v=KTlZ4Hs5h80 。我已经按照它的说明进行了编码,
无法在移动 iOS(safari 和 chrome)上自动播放以前缓存的 mp3 音频 我正在 Angular 8 中开发一个应用程序,在该应用程序的一部分中,我试图在对象数组中缓存几个传入的音频 m
Git 基于内容而不是文件,所以我目前理解以下行为,但我想知道是否有特殊选项或 hack 来检测此类事情: git init mkdir -p foo/bar echo "test" foo/a.tx
我正在寻找语义 ui 正确的类来隐藏例如移动 View 中的 DIV。在 Bootstrap 中,我们有“visible-xs”和“hidden-xs”。 但是在语义ui上我只找到了“仅移动网格” 最
我正在使用 ubuntu 和 想要移动或复制大文件。 但是当我与其他人一起使用服务器时,我不想拥有所有内存并使其他进程几乎停止。 那么有没有办法在内存使用受限的情况下移动或复制文件? 最佳答案 如果你
这些指令有什么区别?以 ARM9 处理器为例,它不应该是: ASM: mov r0, 0 C: r0 = 0; ASM: ld r0, 0 C: r0 = 0; ? 我不知道为什么要使用一个或另一个:
我有一个文件夹,其中包含一些随机命名的文件,其中包含我需要的数据。 为了使用数据,我必须将文件移动到另一个文件夹并将文件命名为“file1.xml” 每次移动和重命名文件时,它都会替换目标文件夹中以前
我经常在 IB/Storyboard 中堆叠对象,几乎不可能拖动其他对象后面的对象而不移动前面的对象。无论如何我可以移动已经选择但位于其他对象后面的对象吗?当我尝试移动它时,它总是选择顶部的对象,还是
几个月前,我看到 Safari 7 允许推送通知,它似乎是一个非常有用的工具,除了我看到的每个示例都专注于桌面浏览,而不是移动设备。 Safari 推送通知是否可以在移动设备上运行,如果没有,是否有计
我有一个简单的 View 模型,其中包含修改后的 ObservableCollection使用 SynchronizationContext.Current.Send在 UI 线程上执行对集合的更改。
关于cassandra创建的数据文件和系统文件的位置,我需要移动在“cassandra.yaml”配置文件中设置的“commitlog_directory”、“data_file_directorie
我有这个代码 $(function() { var message = 'Dont forget us'; var original; var txt1 = ' - '; $(wind
我的客户报告说他的网站有一个奇怪的问题。该网站的 URL 是 your-montenegro.me 在 基于 Android 的浏览器 上加载时,页面底部会出现一个奇怪的空白区域。以下是屏幕截图: 华
我有这个 HTML 标记: Express 300 bsf Sign Up 我需要将元素从 DOM 上的一个
我有一个可重新排序的 TableView (UITableView 实例)。尽管我已经实现了 UITableViewDataSource 方法: tableView:moveRowAtIndexPat
我的客户报告说他的网站有一个奇怪的问题。该网站的 URL 是 your-montenegro.me 在 基于 Android 的浏览器 上加载时,页面底部会出现一个奇怪的空白区域。以下是屏幕截图: 华
我需要在拖放或复制/剪切和粘贴(复制与移动)期间获取操作类型。它是一个 Swing 应用程序,并且实现了 TransferHandle。我在操作结束时需要此信息,在 importData 方法中。 对
我编写了一个具有 add 和 get 方法的 SortedIntList 类。 我调用以下四个方法: SortedIntList mySortedIntList = new SortedIntList
我是一名优秀的程序员,十分优秀!